Compartir recursos de dominio cruzado Obtenga: "se negó a obtener el encabezado inseguro" Etag "" de la respuesta

StackOverflow https://stackoverflow.com/questions/5822985

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?

¿Fue útil?

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

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