เมื่อเร็ว ๆ นี้ฉันประสบปัญหากับคำขอ CORS (Cross Origin Resource Sharing) บน Safari ทั้ง OSX และ iOS ในขณะที่คำขอเดียวกันนั้นทำงานได้อย่างสมบูรณ์บน Chrome และ Firefox ฉันปฏิบัติตามเอกสารประกอบของ W3C และจัดการคำขอ preflight ทางฝั่งเซิร์ฟเวอร์ การตอบสนองของฉันเป็นดังนี้:
HTTP/1.0 200 OK
Access-Control-Allow-Origin: http://192.168.1.96:4399
Access-Control-Allow-Methods: POST
Access-Control-Allow-Methods: GET
Access-Control-Allow-Methods: OPTIONS
Access-Control-Allow-Headers: Origin
Access-Control-Allow-Headers: Authorization
Access-Control-Allow-Headers: X-Requested-With
Access-Control-Allow-Headers: Accept
Access-Control-Allow-Headers: Access-Control-Request-Method
Access-Control-Allow-Headers: Access-Control-Request-Headers
Access-Control-Allow-Headers: DNT
Access-Control-Allow-Headers: X-CustomHeader
Access-Control-Allow-Headers: Content-Type
Access-Control-Max-Age: 0
Date: Fri, 25 Nov 2016 08:45:25 GMT
Origin: http://192.168.1.96:4399
Access-Control-Expose-Headers: Origin
Content-Encoding: gzip
Transfer-Encoding: chunked
การตอบสนองดังกล่าวทำงานได้ดีบนเบราว์เซอร์ Chrome, Firefox และ Android: คำขอ POST จะถูกส่งทันทีหลังจากคำขอ preflight แต่ใน Safari หลังจากที่เซิร์ฟเวอร์ตอบกลับคำขอ reflight ฉันได้รับข้อความแสดงข้อผิดพลาดจากคอนโซล:
Failed to load resource: The network connection was lost.
ฉันตรวจสอบการตอบสนองของ preflight จากเซิร์ฟเวอร์ แต่พบว่าเหมือนกับด้านบน... หลังจากค้นหาและลองหลายครั้ง แต่ก็ยังไม่สามารถทำงานได้ :-(
มีใครเคยเจอปัญหามาก่อนบ้างไหม มีใครทราบบ้างไหมว่าฉันได้ทำผิดพลาดอะไร
ขอบคุณมากล่วงหน้า!