คุณได้รับหนึ่งคำตอบแล้ว - ดีกว่าไม่ทำเลย แต่ในความเห็นของฉันโค้ดสามารถใช้เป็นการวนซ้ำเริ่มต้นเท่านั้น
รหัสด้านล่าง ซึ่งฉันไม่ใช่ผู้เขียนต้นฉบับ (ซึ่งพบว่าเป็นส่วนสำคัญใน GitHub) จะดีกว่าใน nandling CORS และจะยิ่งดีเป็นพิเศษหากไม่ใช้สัญลักษณ์แทน ยังมีที่ขัดอยู่บ้างแต่ใช้อยู่
ตั้ง $cors '';
# ขยายรายชื่อโดเมน XSS- whilelisted โดยเพิ่มมากขึ้น
ถ้า ($http_origin ~ '^http[s]*?://(foo\.bar|.+\.foo\.bar|fou\.baar|.+\.fou\.baar)') {
ตั้ง $cors T;
}
ถ้า ($request_method = 'ตัวเลือก') {
ตั้ง $cors "${cors}O";
}
ถ้า ($cors = 'T') {
add_header 'Access-Control-Allow-Origin' "$http_origin" เสมอ;
add_header 'Access-Control-Allow-Credentials' 'จริง' เสมอ;
add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, OPTIONS' เสมอ;
add_header 'Access-Control-Allow-Headers' 'Accept,Authorization,Cache-Control,Content-Type,DNT,If-Modified-Since,Keep-Alive,Origin,User-Agent,X-Requested-With' เสมอ;
add_header 'Access-Control-Allow-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' เสมอ;
}
ถ้า ($cors = 'O') {
add_header 'Access-Control-Max-Age' 1728000;
add_header 'ประเภทเนื้อหา' 'ข้อความ/ชุดอักขระธรรมดา=UTF-8';
add_header 'ความยาวเนื้อหา' 0;
กลับ 204;
}
ถ้า ($cors = 'ถึง') {
add_header 'Access-Control-Allow-Origin' "$http_origin" เสมอ;
add_header 'Access-Control-Allow-Credentials' 'จริง' เสมอ;
add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, OPTIONS' เสมอ;
add_header 'Access-Control-Allow-Headers' 'Accept,Authorization,Cache-Control,Content-Type,DNT,If-Modified-Since,Keep-Alive,Origin,User-Agent,X-Requested-With' เสมอ;
add_header 'Access-Control-Allow-Headers' 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
add_header 'Access-Control-Max-Age' 1728000;
add_header 'ประเภทเนื้อหา' 'ข้อความ/ชุดอักขระธรรมดา=UTF-8';
add_header 'ความยาวเนื้อหา' 0;
กลับ 204;
}