masalah dengan Cross Origin Resource Sharing: OSX Safari dan iOS Safari gagal setelah permintaan preflight

Baru-baru ini saya mendapat masalah dengan permintaan CORS (Cross Origin Resource Sharing) di Safari, baik OSX dan iOS, sementara permintaan yang sama berfungsi dengan baik di Chrome dan Firefox. Saya mengikuti dokumentasi W3C dan menangani permintaan preflight di sisi server, respons saya seperti:

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

Respons tersebut berfungsi dengan baik di Chrome, Firefox, dan Browser Android: permintaan POST dikirim tepat setelah permintaan preflight. Namun di Safari, setelah server merespons permintaan pengembalian dana, saya mendapat pesan kesalahan berikut dari konsol:

Failed to load resource: The network connection was lost.

Saya memeriksa respon preflight dari server, tapi ternyata sama seperti di atas... Setelah mencari dan mencoba berkali-kali, saya masih tidak bisa membuatnya berfungsi :-(
Adakah orang yang pernah mengalami masalah ini sebelumnya ?Adakah yang bisa mengetahui kesalahan apa yang telah saya buat?
Terima kasih banyak sebelumnya!


person BenMiracle    schedule 25.11.2016    source sumber
comment
Sepertinya ada bug di Safari yang dapat Anda laporkan di bugs.webkit.org   -  person sideshowbarker    schedule 26.11.2016
comment
@sideshowbarker Terima kasih banyak. Namun yang menarik dan kadang-kadang saya menemukannya berfungsi ketika saya mencentang opsi Disable Cross-Origin Restrictions dari menu pengembangan di OSX Safari! Saya menduga masalah ini mungkin ada hubungannya dengan kebijakan keamanan browser, dan saya akan terus mencoba mencari tahu.   -  person BenMiracle    schedule 28.11.2016
comment
Menurut saya wajar jika Anda menonaktifkan Restrictions for Cross Origin, Anda dapat terhubung ke server target tanpa masalah dan itu tidak menarik sama sekali karena browser sengaja menggunakan Restrictions for Cross Origin Resource Sharing untuk meningkatkan keamanan kami. Jadi, ya, masalahnya sepenuhnya ada hubungannya dengan browser.   -  person haͣrͬukaͣreͤrͬu    schedule 22.04.2019


Jawaban (1)


Ini semua tentang Safari, tambahkan origin ke header permintaan OPTIONS Access-Control-Request-Headers.

Jadi untuk memperbaikinya Anda harus mengaktifkan header ini di Access-Control-Allow-Headers sebagai tanggapan.

PS: lihat pertanyaan serupa Permintaan CORS tidak berfungsi di Safari

person brutto    schedule 08.12.2016
comment
OP melihat permintaan preflight gagal diselesaikan di tingkat jaringan. Yang Anda maksud adalah respons OPTIONS yang tidak dikonfigurasi dengan benar. Tapi dia tidak pernah mendapatkan respons itu sejak awal. - person RavenHursT; 12.09.2017
comment
@RavenHursT tidak, brutto menyebutkan header permintaan yang salah format, oleh karena itu ini adalah jawaban yang benar (saya baru saja memverifikasi dan itu berhasil untuk saya) - person thomaux; 16.11.2017