Ответ 1
См:
... а также заметки в XHR Level 2 о CORS:
Информация намеренно отфильтровывается.
Редактируйте много месяцев спустя: Следующий комментарий здесь спросил "почему"; на якоре в первой ссылке отсутствовало несколько символов, из-за чего было трудно увидеть, в какой части документа я имел в виду.
Это средство безопасности - попытка избежать раскрытия информации в заголовках HTTP, которые могут быть чувствительными. Ссылка W3C о CORS говорит:
Пользовательские агенты должны отфильтровывать все заголовки ответов, отличные от тех, которые являются простыми заголовками ответов, или имя поля не соответствует значению ASCII для одного из значений заголовков Access-Control-Expose Headers (если любой), прежде чем подвергать заголовки ответов API-интерфейсам, определенным в спецификациях API CORS.
Этот отрывок содержит ссылки для "простого заголовка ответа", в котором перечислены Cache-Control, Content-Language, Content-Type, Expires, Last-Modified и Pragma. Так что те передаются. Заголовок заголовка "Access-Control-Expose-Headers" позволяет удаленному серверу выставлять другие заголовки, перечисляя их там. Для получения дополнительной информации см. Документацию W3C.
Помните, что у вас есть одно происхождение - скажем, что веб-страница, которую вы загрузили в своем браузере, запустила некоторый бит JavaScript - и script отправляет запрос другому источнику, что обычно не разрешено, поскольку вредоносное ПО может сделать неприятные вещи таким образом. Таким образом, браузер, запускающий script и выполняющий HTTP-запросы от своего имени, действует как гейткипер.
Браузер смотрит на ответ с этого сервера "другого происхождения", и, если он не кажется "принимающим участие" в CORS, требуемые заголовки отсутствуют или искажены - тогда мы не в состоянии доверять. Мы не можем быть уверены, что локальная работа script работает добросовестно, поскольку, похоже, она пытается связаться с серверами, которые не ожидали, что вас свяжут таким образом. Браузеру, конечно же, не следует "утекать" какую-либо конфиденциальную информацию с этого удаленного сервера, просто передав весь ответ на script без фильтрации, что в основном позволит разрешить запрос на перекрестный поиск. Будет обнаружена уязвимость, связанная с раскрытием информации.
Это может затруднить отладку, но это компромисс между безопасностью и удобством использования, поскольку, поскольку "пользователь" является разработчиком в этом контексте, безопасность имеет существенный приоритет.