NGINX add_header, додаючи кілька заголовків


21

Я намагаюся надсилати кілька заголовків

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

Яке рішення?

Відповіді:


28

Ну так, 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;
}

Ну, остання не працює у FireFox 9 або будь-якій іншій версії. Яке питання.
Гаджус

1
@Guy Не слід. Див. Редагування.
Шейн Мадден

ПРИМІТКА. Якщо дане рішення не працює для вас, прочитайте це та це . Це просвічує, і ви можете знайти причину, що це не працює.
its_me

Чи може значення Access-Control-Allow-Origin бути regexp?
haxpanel

Ви б не хотіли поширити свій приклад на кілька джерел (наприклад, http://example.comі http://localhost:3000)?
Августин Рідінгер


-1

Я зіткнувся з тією ж проблемою, що і кілька субдоменів у моїй мережі, намагаючись отримати доступ до ресурсів, і nginxне було налаштовано належним чином. Ось як я це виправив.

add_header Access-Control-Allow-Origin https://*.your-domain-name.com;

Я сподіваюся, що це допомагає.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.