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