NGINX add_header, thêm nhiều tiêu đề


21

Tôi đang cố gắng gửi nhiều tiêu đề

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

Tuy nhiên, thay vào đó NGINX biến chúng thành

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

Giải pháp là gì?

Câu trả lời:


28

Vâng, vâng, nginx đang kết hợp các tiêu đề có tên giống hệt nhau .. nhưng nó đang làm như vậy theo thông số HTTP. Xem phần 4.2 .

Tiêu đề:

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

Là, theo thông số HTTP / 1.1, có chức năng tương đương với:

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

Nếu bạn có một hệ thống hoặc ứng dụng có khả năng đọc một định dạng chứ không phải định dạng khác, thì đó là vấn đề. nginx đang làm điều đó đúng.


CHỈNH SỬA :

Các tài liệu Mozilla khẳng định rằng chỉ có thể có một Access-Control-Allow-Origintiêu đề.

Định dạng của nó ( xem ở đây ) phải là một danh sách nguồn gốc được phân tách bằng dấu cách:

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

Nhưng thực sự, bạn được cho là đang lặp lại Origintiêu đề do khách hàng cung cấp thay vì tạo ra một tiêu đề ngoài màu xanh. Điều này có lẽ phù hợp hơn:

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

Chà, cái sau không hoạt động trong FireFox 9 hoặc bất kỳ phiên bản nào khác. Mà một vấn đề.
Gajus

1
@Guy cũng không nên. Xem chỉnh sửa.
Shane Madden

LƯU Ý: Nếu giải pháp đã cho không phù hợp với bạn, hãy đọc cái nàycái này . Nó khai sáng, và bạn có thể tìm thấy lý do nó không hoạt động.
it_me

Giá trị của Access-Control-Cho phép-Origin có thể được khai thác lại không?
haxpanel

Bạn có muốn mở rộng ví dụ của bạn đến nhiều nguồn gốc (Ví dụ http://example.comhttp://localhost:3000)?
Augustin Riedinger


-1

Tôi đã phải đối mặt với cùng một vấn đề khi nhiều tên miền phụ trong mạng của tôi đang cố truy cập tài nguyên và nginxkhông được thiết lập đúng. Đây là cách tôi sửa nó.

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

Tôi hi vọng cái này giúp được.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.