Chà, bạn đã nhận được một câu trả lời - tốt hơn là không có gì, nhưng theo quan điểm của tôi, mã đó chỉ có thể được sử dụng làm lần lặp ban đầu.
Mã bên dưới, mà tôi không phải là tác giả ban đầu của (được tìm thấy dưới dạng ý chính trên GitHub), cách xử lý CORS tốt hơn. Và đặc biệt đẹp hơn khi không sử dụng ký tự đại diện. Vẫn còn một số nơi để đánh bóng, nhưng tôi đang sử dụng nó.
đặt $cors '';
# Mở rộng danh sách các miền trong danh sách XSS bằng cách bổ sung thêm
if ($http_origin ~ '^http[s]*?://(foo\.bar|.+\.foo\.bar|fou\.baar|.+\.fou\.baar)') {
đặt $cors T;
}
nếu ($request_method = 'TÙY CHỌN') {
đặt $cors "${cors}O";
}
nếu ($cors = 'T') {
add_header 'Kiểm soát truy cập-Cho phép-Xuất xứ' "$http_origin" luôn;
add_header 'Kiểm soát truy cập-Cho phép-Thông tin xác thực' 'luôn đúng';
add_header 'Kiểm soát truy cập-Cho phép-Phương thức' 'NHẬN, ĐĂNG, ĐẶT, XÓA, TÙY CHỌN' luôn;
add_header 'Kiểm soát truy cập-Cho phép-Tiêu đề' 'Chấp nhận, Cấp phép, Kiểm soát bộ đệm, Loại nội dung, DNT, Nếu-Đã sửa đổi-Từ, Giữ nguyên,Xuất xứ,Tác nhân người dùng,X-Yêu cầu-Với' luôn;
add_header 'Kiểm soát truy cập-Cho phép-Headers' 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
#add_header 'Access-Control-Expose-Headers' 'Authorization' luôn luôn;
}
nếu ($cors = 'O') {
add_header 'Kiểm soát truy cập-Tuổi tối đa' 1728000;
add_header 'Loại nội dung' 'văn bản/bộ ký tự đơn giản=UTF-8';
add_header 'Độ dài nội dung' 0;
trả lại 204;
}
nếu ($cors = 'TO') {
add_header 'Kiểm soát truy cập-Cho phép-Xuất xứ' "$http_origin" luôn;
add_header 'Kiểm soát truy cập-Cho phép-Thông tin xác thực' 'luôn đúng';
add_header 'Kiểm soát truy cập-Cho phép-Phương thức' 'NHẬN, ĐĂNG, ĐẶT, XÓA, TÙY CHỌN' luôn;
add_header 'Kiểm soát truy cập-Cho phép-Tiêu đề' 'Chấp nhận, Cấp phép, Kiểm soát bộ đệm, Loại nội dung, DNT, Nếu-Đã sửa đổi-Từ, Giữ nguyên,Xuất xứ,Tác nhân người dùng,X-Yêu cầu-Với' luôn;
add_header 'Kiểm soát truy cập-Cho phép-Headers' 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
add_header 'Kiểm soát truy cập-Tuổi tối đa' 1728000;
add_header 'Loại nội dung' 'văn bản/bộ ký tự đơn giản=UTF-8';
add_header 'Độ dài nội dung' 0;
trả lại 204;
}