headers - cors php
¿Por qué fallan las solicitudes CORS en Microsoft Edge pero funcionan en otros navegadores? (3)
Estoy usando jQuery para enviar solicitudes ajax de origen cruzado y funcionan bien en IE11, Chrome y Firefox pero fallan en Edge con el siguiente error:
SCRIPT7002: XMLHttpRequest: Error de red 0x80070005, Acceso denegado.
Lo que es interesante es que utilicé Fiddler para tratar de descubrir qué estaba pasando y, cuando Fiddler se está ejecutando y capturando solicitudes, todo funciona bien. Tan pronto como cierro Fiddler o detengo la captura, falla nuevamente.
El sitio se está ejecutando en mi máquina local (webpack-dev-server) haciendo solicitudes a través de la red local a un servicio WebAPI.
Mi archivo de hosts está configurado de esta manera:
127.0.0.1 local.myapp.test
192.168.0.111 api.myapp.test
No debería ser un problema en la producción, ya que el sitio y la API se alojarán en el mismo lugar, pero es muy valioso para el desarrollo y las pruebas.
Actualizar:
Gracias a Eric Law ahora sé por qué se comportaba de manera diferente con Fiddler habilitado. Edge cambiaba a la zona Intranet local debido a que la configuración del proxy cambia Fiddler hace y la zona de la intranet tiene un nivel de seguridad más bajo.
Voy a subir el nivel de seguridad de la zona intranet local hasta medio-alto para que coincida con la zona de Internet y luego usar Fiddler para tratar de averiguar por qué Edge está molesto por la solicitud CORS.
En about: flags dentro de Edge asegúrese de que "Allow localhost loopback (esto podría poner su dispositivo en riesgo)" esté marcado.
A continuación, incluiremos, textualmente, las respuestas que Eric Lawrence (creador de Fiddler) proporcionó amablemente en el foro de Fiddler:
Una posibilidad es que su computadora esté configurada con una zona de Intranet y que la zona de Intranet dependa de un script de configuración de proxy: http://blogs.msdn.com/b/ieinternals/archive/2012/06/05/the-local- intranet-security-zone.aspx . Cuando Fiddler se está ejecutando, la configuración del proxy apunta al mismo Fiddler.
... hay otro factor en juego aquí si está utilizando un sitio Intranet como objetivo de un XHR desde un sitio en la zona de Internet.
Edge se ejecuta en modo protegido mejorado (AppContainer). Eso tiene una característica que bloquea el acceso a los recursos de la red privada de los procesos de la zona de Internet. Consulte la sección "Recursos de red privados" de http://blogs.msdn.com/b/ieinternals/archive/2012/03/23/understanding-ie10-enhanced-protected-mode-network-security-addons-cookies-metro -desktop.aspx para más detalles.
Agregué local.myapp.test (la URL desde la que estoy ejecutando mi SPA) a la zona de Intranet local en Opciones de Internet y ahora Edge está contento sin la necesidad de Fiddler.
Me encontré con esta pregunta, y después de probar varias opciones, lo que funcionó para mí fue eliminar el dominio del que estoy trabajando desde todas las entradas del sitio de la Zona. Utilizando local.myapp.test como ejemplo, revisé las entradas "anysubdomain" .myapp.test y las eliminé de todas las zonas, incluidos todos los subdominios o entradas de comodines.
En Opciones de Internet (IE 11), seleccione la pestaña de seguridad , y en " Intranet local ", haga clic en " sitios ", luego " Avanzado " y elimine las referencias de dominio relevantes allí.
En " Sitios de confianza ", haga clic en " sitios " y elimine las entradas relevantes de la lista de allí