В спецификации HTTP CORS, какая разница между Allow-Headers и Expose-Headers?
В спецификации HTTP CORS, какая разница между 5.6 Access-Control-Allow-Headers и 5.3 Access-Control-Expose-Headers?
Заголовок [Allow-Headers] указывает, как часть ответа на preflight request, имена полей заголовка могут использоваться во время фактический запрос
UPDATE. Я надеялся, что кто-то скажет мне, что один из этих заголовков отправляется для каждого запроса (перед полетом)... Однако для этого используется еще один заголовок: 5.9 Access-Control-Request-Headers
Заголовок [Request-Headers] указывает, какие заголовки будут использоваться в фактическом запросе как часть запроса предполета
Кстати, мне нравится, как они (W3C) тщательно сформулировали 5.9, чтобы заголовок запроса мог иметь поле с именем _Something_ Request Header
.
Я полностью потерял в спецификации, есть ли диаграмма, где я могу лучше понять этот процесс?
Ответы
Ответ 1
Access-Control-Allow-Headers
Используется в ответ на запрос предварительной проверки, чтобы указать, какие заголовки HTTP могут использоваться при выполнении фактического запроса.
Access-Control-Expose-Headers
Этот заголовок позволяет заголовкам "белый список" серверов разрешать доступ к браузерам. Например:
Источник:
https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS
Ответ 2
Просто, чтобы прояснить вышеприведенный комментарий, что они плохо названы, эти имена плохо названы.
Они выполняют различные функции.
- Access-control-allow-headers указывает, каким заголовкам разрешено изменять состояние сервера.
- В то время как в Access-control-expose-headers есть метод get getResponseHeader(), который возвращает значение конкретного заголовка ответа. Во время запроса CORS метод getResponseHeader() может получить доступ только к простым заголовкам ответов. Чтобы иметь доступ к другим заголовкам, вам необходимо указать здесь.