Compartir recursos de dominio cruzado Obtenga: "se negó a obtener el encabezado inseguro" Etag "" de la respuesta
-
26-10-2019 - |
Pregunta
Una solicitud de obtención simple sin encabezados personalizados. La respuesta se devuelve como se esperaba. Los datos en el cuerpo son accesibles, pero no los encabezados.
Cuando trato de acceder al encabezado "Etag", los navegadores plantean una excepción:
Se negó a obtener el encabezado inseguro "Etag"
Chrome, Safari y Firefox se comportan igual. No lo probé en IE.
¿Que me estoy perdiendo aqui?
Solución
Solo los encabezados de respuesta simples están expuestos cuando se usan CORS. Se definen los encabezados de respuesta simple aquí. ETag
no es un simple encabezado de respuesta. Si desea exponer los encabezados no simples, debe establecer el Access-Control-Expose-Headers
encabezado, así:
Access-Control-Expose-Headers: ETag
Sin embargo, tenga en cuenta que he notado errores en Chrome, Safari y Firefox que evitan que los encabezados no simples se expusen correctamente. Esto puede ser arreglado por ahora, no estoy seguro.
No debería necesitar hacer una solicitud previa, ya que el preflight solo se requiere para métodos HTTP no get/post o no simples. solicitud encabezados (y estás preguntando por respuesta encabezados).
Otros consejos
¿Alguna vez ha probado Ajax 2.0 (Cross Domain Sharing) es una metodología presentada recientemente por W3C: http://www.w3.org/tr/xmlhttprequest2/#ref-cors
También hay otra forma de hacer esto, que se llama JSON-P, es como una solicitud JSON, pero puede usarlo para Dominios cruzados: http://en.wikipedia.org/wiki/jsonp
Sin embargo, ambos pueden ser muy peligrosos para los propietarios del sitio si no se configuran correctamente. Así que tenga cuidado al usarlo.
Ps] No estoy seguro si esto ayudará: http://www.w3.org/protocols/rfc2616/rfc2616-sec14.html