Pregunta

Estoy tratando de utilizar origen cruzado de intercambio de recursos con Access-Control-Permita -origen y las cabeceras relacionadas. He que funcione en Firefox, Chrome, pero me da errores de permisos, que se ve esto:

XMLHttpRequest cannot load <remote>. Origin <local> is not allowed by Access-Control-Allow-Origin.

La red de inspector muestra la solicitud, pero no respuesta (y no incluye los de petición y respuesta de verificación previa OPCIONES). Inspeccioné la salida de solicitud utilizando rizo y reproducir todas las cabeceras, y lo que veo lo que encaja la especificación implica (y otra vez, lo acepta Firefox). Estoy en una pérdida de cómo depurar esto más - ¿existen trucos para ver la actividad de la red a un nivel más bajo que lo que Chrome ofrece normalmente? La información sobre cómo Chrome interpreta CORS solicitudes de manera diferente a Firefox?

¿Fue útil?

Solución

sospecho que lo que están viendo es una verificación previa seguida de una solicitud Chrome fracasar debido a un error. Eso explicaría por qué las cosas funcionan en Firefox pero no en Chrome.

¿Usted está enviando los encabezados personalizados en su solicitud? Hay un error en WebKit donde las peticiones GET con cabeceras personalizadas falla (bug aquí: http : //code.google.com/p/chromium/issues/detail id = 57836 )?. También he notado que Chrome veces espera que la cabecera Content-Type en la lista Access-Control-Allow-encabezados, a pesar de Content-Type es una cabecera sencilla.

Además, se menciona que el inspector de red no incluye los OPCIONES previa al vuelo? ¿Qué inspector de la red está utilizando? Me gustaría recomendar el uso de Wireshark, ya que esto le da detalles sobre el tráfico de red real que el inspector de Chrome no proporciona (por ejemplo, Wireshark registrar las solicitudes de verificación previa).

Algunas otras sugerencias de depuración:

Trate de solicitud en Safari. Esto ayudará a reducirla a un error de Chrome o un error WebKit.

Las veces que he visto el error que está viendo (Wireshark muestra una petición, pero no una respuesta), es porque mi servidor no incluye el encabezado Access-Control-Allow-Origin, que no se incluye porque Chrome no es el envío de la cabecera origen (consulte el error más arriba). En su traza de red, ¿ves una cabecera de origen en la solicitud? ¿Tiene control sobre el servidor, y si es así, ¿recibe una cabecera de Origen?

Su resistente para depurar el problema real, sin más detalles. Si sigue teniendo problemas, se puede colocar encabezados de petición / respuesta aquí?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top