Spec-Zone.ru › HTTP

CORS: Errors.CORSMissingAllowOrigin

Причина: отсутствует заголовок CORS «Access-Control-Allow-Origin»

Причина

Reason: CORS header 'Access-Control-Allow-Origin' missing

Что пошло не так?

В ответе на запрос CORS отсутствует обязательный заголовок Access-Control-Allow-Origin, который используется для определения того, может ли содержимое, работающее в пределах текущего источника, получить доступ к ресурсу.

Если сервер находится под вашим контролем, добавьте источник запрашивающего сайта в список доменов, которым разрешён доступ, указав его в значении заголовка Access-Control-Allow-Origin.

Например, чтобы разрешить сайту с адресом https://example.com получать доступ к ресурсу с помощью CORS, заголовок должен выглядеть так:

Access-Control-Allow-Origin: https://example.com

Также можно настроить сайт так, чтобы к нему могли обращаться любые сайты, используя подстановочный знак *. Используйте его только для общедоступных API. В частных API никогда не следует использовать *; вместо этого необходимо указать один или несколько конкретных доменов. Кроме того, подстановочный знак работает только для запросов, в которых атрибут crossorigin установлен в значение anonymous, и не позволяет отправлять в запросах учётные данные, например файлы cookie.

Access-Control-Allow-Origin: *

Предупреждение: использовать подстановочный знак, чтобы разрешить всем сайтам доступ к частному API, не рекомендуется.

Чтобы разрешить любому сайту выполнять запросы CORS без использования подстановочного знака * (например, чтобы разрешить передачу учётных данных), сервер должен считывать значение заголовка Origin запроса и использовать его для установки значения Access-Control-Allow-Origin, а также задавать заголовок Vary: Origin, указывающий, что некоторые заголовки устанавливаются динамически в зависимости от источника.

Примеры для распространённых веб-серверов

Точная директива для установки заголовков зависит от вашего веб-сервера.

В примерах ниже

Для Apache (документация) добавьте в конфигурацию сервера следующую строку (в соответствующем разделе <Directory>, <Location>, <Files> или <VirtualHost>). Обычно конфигурация находится в файле .conf (httpd.conf и apache.conf — распространённые названия таких файлов) или в файле .htaccess:

Header set Access-Control-Allow-Origin 'https://example.com'

Для Nginx (документация) команда для установки этого заголовка выглядит так:

add_header 'Access-Control-Allow-Origin' 'https://example.com' always;

Если сервер вам не подконтролен

Если удалённый сервер вам не подконтролен и не включает заголовок Access-Control-Allow-Origin, исправить эту ошибку на стороне сервера невозможно. Рассмотрите следующие варианты:

  • Измените запрос так, чтобы он стал простым запросом и не вызывал предварительный запрос, если сервер обрабатывает простые междоменные запросы.
  • Если вам не нужно читать ответ, используйте mode: "no-cors" в вызове fetch(). Ответ будет непрозрачным (его нельзя будет прочитать), но запрос выполнится успешно.
  • Направьте запрос через контролируемый вами прокси-сервер, который получит ресурс и вернёт его с соответствующими заголовками CORS.

Подробнее см. в разделе Рекомендации для клиентской стороны.

См. также

  • Ошибки CORS
  • Глоссарий: CORS
  • Введение в CORS

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/CORS/Errors/CORSMissingAllowOrigin

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API