แก้ไข 2018-09-13 : เพิ่มเงื่อนไขบางประการเกี่ยวกับคำขอเที่ยวบินล่วงหน้านี้และวิธีหลีกเลี่ยงเมื่อสิ้นสุดการตอบกลับนี้
OPTIONS
คำขอเป็นสิ่งที่เราเรียกpre-flight
คำขอCross-origin resource sharing (CORS)
มา
พวกเขาจำเป็นเมื่อคุณทำการร้องขอข้ามจุดกำเนิดต่าง ๆ ในสถานการณ์เฉพาะ
เบราว์เซอร์บางตัวมีการร้องขอเที่ยวบินล่วงหน้านี้เป็นมาตรการด้านความปลอดภัยเพื่อให้มั่นใจว่าเซิร์ฟเวอร์จะได้รับคำขอที่เชื่อถือได้ หมายความว่าเซิร์ฟเวอร์เข้าใจว่าวิธีการต้นทางและส่วนหัวที่ถูกส่งไปตามคำขอนั้นปลอดภัยที่จะดำเนินการ
เซิร์ฟเวอร์ของคุณไม่ควรเพิกเฉย แต่จัดการกับคำขอเหล่านี้เมื่อใดก็ตามที่คุณพยายามจะทำคำขอข้ามทาง
แหล่งข้อมูลที่ดีสามารถพบได้ที่นี่http://enable-cors.org/
วิธีจัดการกับสิ่งเหล่านี้เพื่อความสะดวกสบายคือการตรวจสอบให้แน่ใจว่าเส้นทางใด ๆ ที่มีOPTIONS
วิธีการที่เซิร์ฟเวอร์ส่งการตอบกลับด้วยส่วนหัวนี้
Access-Control-Allow-Origin: *
สิ่งนี้จะบอกเบราว์เซอร์ว่าเซิร์ฟเวอร์ยินดีตอบรับการร้องขอจากแหล่งกำเนิดใด ๆ
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีเพิ่มการรองรับ CORS ให้กับเซิร์ฟเวอร์ของคุณโปรดดูผังงานต่อไปนี้
http://www.html5rocks.com/static/images/cors_server_flowchart.png
แก้ไข 2018-09-13
OPTIONS
คำขอCORS จะถูกเรียกใช้ในบางกรณีดังที่อธิบายไว้ในเอกสาร MDN :
คำขอบางอย่างไม่เรียก CORS preflight สิ่งเหล่านี้เรียกว่า“ คำของ่าย ๆ ” ในบทความนี้ถึงแม้ว่าข้อมูลจำเพาะการดึงข้อมูล (ซึ่งกำหนด CORS) จะไม่ใช้คำนั้น คำขอที่ไม่เรียกใช้ CORS preflight ซึ่งเรียกว่า“ คำของ่าย” - เป็นคำขอที่ตรงตามเงื่อนไขต่อไปนี้ทั้งหมด:
วิธีการที่อนุญาตเท่านั้นคือ:
นอกเหนือจากส่วนหัวที่ตั้งค่าโดยอัตโนมัติโดยตัวแทนผู้ใช้ (ตัวอย่างเช่นการเชื่อมต่อตัวแทนผู้ใช้หรือส่วนหัวอื่น ๆ ที่มีชื่อที่กำหนดไว้ในสเปค Fetch เป็น "ชื่อส่วนหัวที่ต้องห้าม") ส่วนหัวเท่านั้นที่ได้รับอนุญาต การตั้งค่าด้วยตนเองคือค่าที่ Fetch spec กำหนดว่าเป็น“ CORS-safelisted request-header” ซึ่ง ได้แก่ :
- ยอมรับ
- ยอมรับภาษา
- เนื้อหาภาษา
- ประเภทเนื้อหา (แต่โปรดสังเกตข้อกำหนดเพิ่มเติมด้านล่าง)
- DPR
- downlink
- บันทึกข้อมูล
- วิวพอร์ตกว้าง
- ความกว้าง
ค่าที่อนุญาตเฉพาะสำหรับส่วนหัวประเภทเนื้อหาคือ:
- แอพลิเคชัน / x-www ฟอร์ม urlencoded
- multipart / form ข้อมูล
- ข้อความ / ธรรมดา
ไม่มีการลงทะเบียนตัวรับฟังเหตุการณ์บนวัตถุ XMLHttpRequestUpload ใด ๆ ที่ใช้ในคำขอ สิ่งเหล่านี้เข้าถึงได้โดยใช้คุณสมบัติ XMLHttpRequest.upload
ไม่มีวัตถุ ReadableStream ถูกใช้ในการร้องขอ