NGINX add_header, menambahkan beberapa header


21

Saya mencoba mengirim beberapa tajuk

add_header Access-Control-Allow-Origin http://dev.anuary.com;
add_header Access-Control-Allow-Origin https://dev.anuary.com;

Namun, sebaliknya NGINX yang membuatnya

Access-Control-Allow-Origin: http://dev.anuary.com, https://dev.anuary.com

Apa solusinya?

Jawaban:


28

Yah, ya, nginx menggabungkan header yang identik namanya .. tapi itu sesuai dengan spesifikasi HTTP. Lihat bagian 4.2 .

Header:

Access-Control-Allow-Origin: http://dev.anuary.com, https://dev.anuary.com

Apakah, sesuai dengan spesifikasi HTTP / 1.1, secara fungsional setara dengan:

Access-Control-Allow-Origin: http://dev.anuary.com
Access-Control-Allow-Origin: https://dev.anuary.com

Jika Anda memiliki sistem atau aplikasi yang mampu membaca satu format dan bukan yang lain, maka itu masalahnya. nginx melakukannya dengan benar.


EDIT :

The dokumentasi Mozilla menyatakan bahwa hanya ada satu Access-Control-Allow-Originsundulan.

Formatnya ( lihat di sini ) haruslah daftar asal-usul yang dibatasi ruang:

add_header Access-Control-Allow-Origin "http://dev.anuary.com https://dev.anuary.com";

Tapi sungguh, Anda seharusnya menggemakan Origintajuk yang disediakan oleh klien alih-alih menghasilkan yang tiba-tiba. Ini mungkin lebih tepat:

if ($http_origin ~* "^https?://dev\.anuary\.com$" ) {
    add_header Access-Control-Allow-Origin $http_origin;
}

Nah, yang terakhir tidak bekerja di FireFox 9 atau versi lain. Yang merupakan masalah.
Gajus

1
@ Beli juga seharusnya. Lihat edit.
Shane Madden

CATATAN: Jika solusi yang diberikan tidak bekerja untuk Anda, baca ini dan ini . Ini mencerahkan, dan Anda mungkin menemukan alasannya tidak bekerja.
its_me

Bisakah nilai Access-Control-Allow-Origin menjadi regexp?
haxpanel

Maukah Anda memperluas contoh Anda ke beberapa asal (Eg. http://example.comDan http://localhost:3000)?
Augustin Riedinger


-1

Saya menghadapi masalah yang sama dengan beberapa sub domain di jaringan saya mencoba mengakses sumber daya dan nginxtidak diatur dengan benar. Inilah cara saya memperbaikinya.

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

Saya harap ini membantu.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.