Ver:
... así como las notas en XHR nivel 2 sobre CORS:
La información es intencionalmente filtrado.
Editar muchos meses después: Un comentario de seguimiento aquí preguntó por "por qué"; al presentador del primer enlace le faltaban algunos caracteres que dificultaban ver a qué parte del documento me refería.
Es una cuestión de seguridad: un intento de evitar la exposición de información en encabezados HTTP que podrían ser sensibles. El enlace del W3C sobre CORS dice:
Los agentes de usuario deben filtrar todas las cabeceras de respuesta distintos de los que son una cabecera de respuesta simple o de los cuales el nombre del campo es un caso-insensibles partido ASCII para uno de los valores de la Los encabezados de Access-Control-Expose-Headers (si corresponde), antes de exponer los encabezados de respuesta a las API definidas en las especificaciones de CORS API.
Ese pasaje incluye enlaces para "encabezado de respuesta simple", que enumera Cache-Control, Content-Language, Content-Type, Expira, Last-Modified y Pragma. Entonces esos pasan. La parte de "Access-Control-Expose-Headers headers" permite que el servidor remoto exponga otros encabezados también al listarlos allí. Consulte la documentación del W3C para más información.
Recuerde que tiene un origen, digamos que es la página web que ha cargado en su navegador, ejecutando algo de JavaScript, y el script está realizando una solicitud a otro origen, lo que normalmente no está permitido porque el malware puede hacer cosas desagradables de esa manera. Por lo tanto, el navegador, ejecutando el script y realizando las solicitudes HTTP en su nombre, actúa como guardián.
El navegador mira la respuesta de ese servidor de "otro origen" y, si no parece estar "participando" en CORS - los encabezados requeridos faltan o están mal formados - entonces estamos en una posición de sin confianza No podemos estar seguros de que el script que se está ejecutando localmente esté actuando de buena fe, ya que parece estar intentando contactar servidores que no esperan ser contactados de esta manera.El navegador ciertamente no debe "filtrar" ninguna información sensible de ese servidor remoto simplemente pasando toda su respuesta al script sin filtrar, que básicamente sería permitiendo una solicitud de origen cruzado, de tipo. Una vulnerabilidad de divulgación de información surgiría.
Esto puede dificultar la depuración, pero se trata de una cuestión de seguridad frente a usabilidad donde, dado que el "usuario" es un desarrollador en este contexto, la seguridad tiene una prioridad importante.
Dudo si esto es posible, ya que es una característica del navegador, más allá del alcance de javascript. Además de eso, podría causar un agujero de seguridad que se puede usar para olfatear. –
Tengo curiosidad por esto también. –