Ralat XML jQuery: "Tiada pengepala 'Access-Control-Allow-Origin' hadir pada sumber yang diminta"
Apabila cuba untuk akses fail XML yang terletak pada domain lain menggunakan jQuery, anda mungkin menghadapi mesej ralat: "Tiada pengepala 'Access-Control-Allow-Origin' hadir pada sumber yang diminta." Ralat ini berlaku disebabkan oleh Dasar Asal Sama, yang mengehadkan panggilan AJAX silang asal.
Memahami Dasar Asal Sama
Dasar Asal Sama menguatkuasakan itu pelayar web hanya membenarkan panggilan AJAX ke perkhidmatan yang dihoskan pada domain yang sama dengan halaman HTML yang membuat permintaan. Dalam contoh yang diberikan, halaman HTML dihoskan pada http://run.jsbin.com/, manakala fail XML terletak di http://www.ecb.europa.eu/, menghasilkan permintaan silang asal yang disekat oleh penyemak imbas.
Mendayakan Permintaan Silang Asal (CORS)
Untuk membenarkan permintaan silang asal, pelayan mesti memasukkan pengepala yang sesuai dalam responsnya. Salah satu pengepala ini ialah pengepala Access-Control-Allow-Origin, yang menentukan asal-usul yang dibenarkan untuk mengakses sumber.
Dalam kes fail XML, pelayan ECB tidak menyediakan CORS yang diperlukan pengepala, oleh itu mesej ralat. Untuk menyelesaikan masalah ini, pelayan perlu dikonfigurasikan untuk memasukkan pengepala berikut:
Access-Control-Allow-Origin: http://run.jsbin.com Access-Control-Allow-Methods: GET Access-Control-Allow-Headers: Content-Type
Nota tentang Permintaan Prapenerbangan
Dalam kes tertentu, seperti semasa membuat POST permintaan dengan pengepala bukan ringkas, penyemak imbas boleh melakukan permintaan pra-penerbangan OPTIONS untuk menentukan sama ada pelayan menyokong CORS untuk permintaan khusus. Jika respons pelayan kepada permintaan prapenerbangan ini tidak mengandungi pengepala CORS yang sesuai, permintaan utama akan gagal dengan mesej ralat yang sama. Oleh itu, adalah penting untuk menyertakan pengepala yang diperlukan sebagai respons kepada kedua-dua permintaan prapenerbangan dan utama.
Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat 'Tiada 'Access-Control-Allow-Origin' Header' Apabila Mengakses Fail XML daripada Domain Berbeza?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!