cors - chrome - ¿Por qué es necesario Access-Control-Expose-Headers?
access-control-expose-headers chrome (3)
Esta es la razón por la cual Access-Control-Expose-Headers es necesario:
Access-Control-Expose-Headers (opcional): el objeto XMLHttpRequest 2 tiene un método getResponseHeader () que devuelve el valor de un encabezado de respuesta en particular. Durante una solicitud CORS, el método getResponseHeader () solo puede acceder a encabezados de respuesta simple. Los encabezados de respuesta simple se definen de la siguiente manera:
- Control de caché
- Contenido-lenguaje
- Tipo de contenido
- Vence
- Última modificación
- Pragma
Si desea que los clientes puedan acceder a otros encabezados, debe utilizar el encabezado Access-Control-Expose-Headers . El valor de este encabezado es una lista delimitada por comas de los encabezados de respuesta que desea exponer al cliente.
Para obtener más información, consulte el enlace https://www.html5rocks.com/en/tutorials/cors/
Feliz codificacion !!
Estaba buscando las razones de seguridad específicas de por qué esto fue agregado. Fue una especie de momento WTH cuando estaba implementando cors y pude ver todos los encabezados devueltos pero no pude acceder a ellos a través de javascript ...
CORS se implementa de tal manera que no rompa suposiciones hechas en el mundo pre-CORS, solo del mismo origen.
En el mundo pre-CORS, un cliente podría activar una solicitud de origen cruzado (por ejemplo, a través de una etiqueta de script), pero no pudo leer los encabezados de respuesta.
Para garantizar que CORS no rompa esta suposición, la especificación CORS requiere que el servidor otorgue permisos explícitos para que el cliente lea esos encabezados (a través del encabezado Access-Control-Expose-Headers
). De esta manera, las solicitudes de CORS no autorizadas se comportan como lo hicieron en un mundo anterior a CORS.
Esta es una muy buena pregunta. Mirando a través de http://www.w3.org/TR/cors/#simple-response-header , no es obvio por qué querría o debería hacer esto.
La especificación de CORS pone mucho peso en la idea de que debe tener un acuerdo previo a la solicitud donde el cliente solicita un tipo de conexión y el servidor responde que lo permitirá, por lo que este puede ser otro aspecto de eso. .
Por defecto, la longitud del contenido no es un encabezado permitido, por lo que me encontré con el mismo problema (más adelante, cuando necesitaba acceder a WebDAV y tuve que modificar los parámetros permitidos). CORS realmente no tiene mucho sentido (para mí ) en primer lugar, así que no me sorprendería si fuesen caprichos.