Заголовок Access-Control-Allow-Headers
Заголовок Access-Control-Allow-Headers
Заголовок ответа Access-Control-Allow-Headers используется в ответ на предварительный запрос предварительного запроса, который включает Access-Control-Request-Headers, чтобы указать, какие HTTP-заголовки могут быть использованы во время фактического запроса.
Этот заголовок необходим, если запрос содержит заголовок Access-Control-Request-Headers.
Примечание: заголовки запроса, разрешенные CORS, всегда разрешены и обычно не перечисляются в Access-Control-Allow-Headers (если нет необходимости обойти дополнительные ограничения дополнительных ограничений).
| Тип заголовка | Заголовок ответа |
|---|---|
| Запрещённое имя заголовка | нет |
Синтаксис
Access-Control-Allow-Headers: [<header-name>[, <header-name>]*] Access-Control-Allow-Headers: *
Директивы
<header-name>-
Имя поддерживаемого заголовка запроса. Заголовок может содержать любое количество заголовков, разделённых запятыми.
-
*(подстановка) -
Значение "
*" рассматривается только как специальное значение подстановки для запросов без аутентификации (запросы без HTTP-куки или информации об HTTP-аутентификации). В запросах с аутентификацией оно обрабатывается как буквальное имя заголовка "*" без специальной семантики. Обратите внимание, что заголовокAuthorizationне может быть подставлен и всегда должен быть указан явно.
Примеры
Пользовательский заголовок
Вот пример того, как может выглядеть заголовок Access-Control-Allow-Headers. Он указывает, что пользовательский заголовок с именем X-Custom-Header поддерживается запросами CORS к серверу (кроме заголовков запросов, разрешенных CORS).
Access-Control-Allow-Headers: X-Custom-Header
Несколько заголовков
Этот пример демонстрирует Access-Control-Allow-Headers, когда он указывает поддержку нескольких заголовков.
Access-Control-Allow-Headers: X-Custom-Header, Upgrade-Insecure-Requests
Обход дополнительных ограничений
Хотя заголовки запросов, разрешенные CORS, всегда разрешены и обычно не требуют перечисления в Access-Control-Allow-Headers, их указание позволит обойти дополнительные ограничения, которые к ним применяются.
Access-Control-Allow-Headers: Accept
Пример предварительного запроса
Посмотрим на пример предварительного запроса, связанного с Access-Control-Allow-Headers.
Запрос
Сначала запрос. Предварительный запрос — это запрос OPTIONS, который включает некоторую комбинацию из трёх заголовков предварительного запроса: Access-Control-Request-Method, Access-Control-Request-Headers и Origin.
Предварительный запрос ниже сообщает серверу, что мы хотим отправить запрос CORS GET с заголовками, перечисленными в Access-Control-Request-Headers (Content-Type и x-requested-with).
OPTIONS /resource/foo Access-Control-Request-Method: GET Access-Control-Request-Headers: Content-Type, x-requested-with Origin: https://foo.bar.org
Ответ
Если запрос CORS, указанный в предварительном запросе, авторизован, сервер ответит на предварительный запрос сообщением, в котором указаны разрешённый источник, методы и заголовки. Ниже мы видим, что Access-Control-Allow-Headers включает заголовки, которые были запрошены.
HTTP/1.1 200 OK Content-Length: 0 Connection: keep-alive Access-Control-Allow-Origin: https://foo.bar.org Access-Control-Allow-Methods: POST, GET, OPTIONS, DELETE Access-Control-Allow-Headers: Content-Type, x-requested-with Access-Control-Max-Age: 86400
Если запрошенный метод не поддерживается, сервер ответит ошибкой.
Спецификации
| Спецификация |
|---|
| Fetch Standard # http-access-control-allow-headers |
Совместимость с браузерами
| Рабочий стол | Мобильное устройство | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | WebView Android | Chrome Android | Firefox for Android | Opera Android | Safari на iOS | Samsung Internet | |
Access-Control-Allow-Headers |
4 |
12 |
3.5 |
10 |
12 |
4 |
2 |
Да |
4 |
12 |
3.2 |
Да |
wildcard |
63 |
79 |
69 |
Нет |
50 |
Нет |
63 |
63 |
Нет |
46 |
Нет |
8.2 |
См. также
© 2005–2022 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Headers