Я пытаюсь отправить несколько заголовков
add_header Access-Control-Allow-Origin http://dev.anuary.com;
add_header Access-Control-Allow-Origin https://dev.anuary.com;
Однако вместо этого NGINX превращает их в
Access-Control-Allow-Origin: http://dev.anuary.com, https://dev.anuary.com
Какое решение?
Ну да, nginx комбинирует заголовки с одинаковыми именами ... но делает это в соответствии со спецификацией HTTP. См. Раздел 4.2.
Заголовок:
Access-Control-Allow-Origin: http://dev.anuary.com, https://dev.anuary.com
Согласно спецификации HTTP / 1.1, функционально эквивалентен:
Access-Control-Allow-Origin: http://dev.anuary.com
Access-Control-Allow-Origin: https://dev.anuary.com
Проблема в том, что у вас есть система или приложение, которое может читать один формат, а не другой. nginx делает это правильно.
РЕДАКТИРОВАТЬ:
В Документация Mozilla заявляет, что может быть только один Access-Control-Allow-Origin
заголовок.
Его форматирование (посмотреть здесь) должен быть разделенным пробелами списком источников происхождения:
add_header Access-Control-Allow-Origin "http://dev.anuary.com https://dev.anuary.com";
Но на самом деле ты должно быть вторя Origin
заголовок, предоставленный клиентом, вместо того, чтобы генерировать один неожиданно. Вероятно, это более уместно:
if ($http_origin ~* "^https?://dev\.anuary\.com$" ) {
add_header Access-Control-Allow-Origin $http_origin;
}
Ознакомьтесь с этим сообщением о настройке вашего Nginx CORS с динамическими доменами: https://qa.lsproc.com/post/access-control-allow-origin-multiple-origin-domains
Я столкнулся с той же проблемой, что и несколько поддоменов в моей сети, пытающихся получить доступ к ресурсам и nginx
был настроен неправильно. Вот как я это исправил.
add_header Access-Control-Allow-Origin https://*.your-domain-name.com;
Надеюсь, это поможет.