peticiones domain disable cross credencial control cabecera allow admite jquery xmlhttprequest options cors

jquery - domain - ¿Cómo se envía un encabezado personalizado en un XMLHttpRequest de dominio cruzado(CORS)?



peticiones cross domain (1)

Estoy intentando enviar una solicitud CORS para una carga JSON. Controlo tanto el servidor como el cliente.

Estoy siguiendo a lo largo aquí: https://developer.mozilla.org/en-US/docs/HTTP/Access_control_CORS?redirectlocale=en-US&redirectslug=HTTP_access_control

El servidor tiene un encabezado personalizado que debe enviarse junto con cada solicitud. Por lo tanto, este encabezado personalizado hace que la solicitud sea "no simple" y, por lo tanto, la solicitud debe estar marcada previamente con una solicitud de OPCIONES.

Puedo ver jQuery haciendo la solicitud de OPCIONES, pero no envía el encabezado personalizado.

Métodos que he intentado:

En ambos casos, el navegador no envía el encabezado personalizado.

Estoy usando FF 17.0.1, jquery 1.8.3.


Tu problema no es con jquery, está en cómo funciona CORS . Su devolución de llamada antes de enviar probablemente funcionó como se esperaba ... pero los navegadores no enviarán encabezados personalizados en las solicitudes de verificación previa, sin importar qué. Esto es por diseño; El propósito de la solicitud de verificación previa es determinar qué información está permitido que el agente de usuario (navegador) envíe más allá de lo "simple" definido en la especificación CORS. Por lo tanto, el hecho de que el agente de usuario envíe cualquier dato no simple (como su encabezado personalizado) como parte de la solicitud de verificación previa es contraproducente.

Para indicar al agente de usuario que incluya su encabezado personalizado en la solicitud CORS real, incluya un Access-Control-Allow-Headers en su respuesta de verificación previa. Vale la pena señalar que si no está demasiado preocupado por los encabezados que transmite el agente de usuario, creo que puede devolver el valor del campo del encabezado de solicitud de Access-Control-Request-Headers como el valor del Access-Control-Allow-Headers que envías en la respuesta.

También es posible que desee incluir algunos de los otros encabezados Access-Control-Allow-* definidos en la sección de sintaxis de la especificación .

Consulte también CORS: ¿Cómo se realiza una "comprobación previa" en httprequest?

Vea también el ejemplo de verificación previa de CORS de Mozilla , que muestra estos encabezados en acción.