Memahami dan Menyelesaikan Ralat "Respons to Preflight Request Doesn't Pass Access Control Check"
Cross-Origin Resource Sharing (CORS) memastikan keselamatan dengan menyekat permintaan daripada mengakses data sensitif merentasi asal yang berbeza. Apabila permintaan AJAX berasal dari asal yang berbeza daripada pelayan yang mengehos sumber, permintaan prapenerbangan dihantar untuk menyemak sama ada permintaan itu dibenarkan.
Dalam senario yang disediakan, ngResource digunakan untuk mengakses Amazon Web Services REST API. Walau bagaimanapun, penyemak imbas mengembalikan ralat, "Respons kepada permintaan prapenerbangan tidak lulus semakan kawalan akses - Tiada pengepala 'Access-Control-Allow-Origin'." Ini menunjukkan bahawa pelayan tidak mempunyai pengepala CORS yang didayakan.
Mengatasi Isu
Untuk menyelesaikan isu ini, beberapa pendekatan boleh diambil:
1. Melumpuhkan CORS:
Lumpuhkan CORS dalam penyemak imbas. Ini adalah penyelesaian sementara yang tidak boleh digunakan untuk persekitaran pengeluaran.
2. Pemalam Penyemak Imbas:
Gunakan pemalam penyemak imbas yang membenarkan permintaan silang asal. Walau bagaimanapun, pendekatan ini mungkin tidak serasi dengan semua pemalam.
3. Pelayan Proksi:
Gunakan proksi seperti nginx untuk memajukan permintaan dan mengendalikan isu CORS. Ini membolehkan penyemak imbas berkomunikasi dengan proksi, yang kemudiannya berinteraksi dengan pelayan sebenar.
4. Konfigurasi Pelayan:
Konfigurasikan pelayan untuk menerima pengepala daripada asal-usul tertentu. Ini melibatkan pengubahsuaian fail konfigurasi pelayan untuk membolehkan CORS. Rujuk dokumentasi untuk pelayan web khusus anda untuk mendapatkan arahan.
Penjelasan Terperinci
Apabila penyemak imbas menemui permintaan merentas domain, ia menghantar permintaan pra-penerbangan untuk menentukan sama ada pelayan sasaran membenarkan permintaan tersebut. Permintaan prapenerbangan menggunakan kaedah HTTP OPTIONS dan termasuk pengepala khusus, termasuk pengepala Asal.
Pelayan bertindak balas dengan tindak balas prapenerbangan sepadan yang merangkumi pengepala CORS. Pengepala Access-Control-Allow-Origin menentukan asal-usul yang dibenarkan untuk mengakses sumber tersebut. Jika respons prapenerbangan tidak menyertakan pengepala ini, penyemak imbas akan menyekat permintaan sebenar.
Kesimpulan
Dengan melaksanakan penyelesaian yang sesuai, pembangun boleh mengatasi isu CORS dan membolehkan permintaan silang asal antara domain yang berbeza. Adalah penting untuk memilih pendekatan terbaik berdasarkan keperluan projek dan pertimbangan keselamatan.
Atas ialah kandungan terperinci Mengapa Permintaan Silang Asal Saya Gagal dengan 'Respons kepada Permintaan Prapenerbangan Tidak Lulus Semakan Kawalan Akses'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!