Ralat: "Nol asal tidak dibenarkan oleh Access-Control-Allow-Origin" apabila Meminta daripada URL file://
Dalam cuba mendapatkan semula imej daripada Panoramio melalui AJAX, ralat berulang timbul dalam Chrome: "XMLHttpRequest tidak boleh dimuatkan [URL API Panoramio]. Origin nol tidak dibenarkan oleh Access-Control-Allow-Origin." Ralat ini berpunca daripada isu asas berikut:
-
Jenis Permintaan Dikonfigurasikan Tidak Betul:
Kod awal tidak menyatakan jenis permintaan sebagai JSONP. Selepas itu, jQuery menggunakan XMLHttpRequest, yang bergantung pada Perkongsian Sumber Silang Asal (CORS) untuk permintaan merentas domain. Walau bagaimanapun, penyemak imbas menyokong CORS hanya dengan kebenaran pelayan melalui pengepala Access-Control-Allow-Origin.
-
Null Origin from file:// URL:
Memandangkan kod telah dilaksanakan dari fail:// URL, pengepala Asal nol telah dihasilkan. Asal null ini tidak boleh bergema kembali dari pelayan, mengakibatkan kegagalan kebenaran.
Penyelesaian:
Untuk menyelesaikan isu ini, buat pembetulan berikut:
-
Gunakan $.getJSON dengan callback=?:
Daripada $.get, gunakan $.getJSON dan tambahkan panggilan balik=? ke URL permintaan. Ini memberi isyarat kepada jQuery untuk menggunakan JSONP, yang secara automatik menetapkan jenis permintaan kepada "jsonp".
-
Pastikan Protokol HTTP:
Pastikan kod dilaksanakan daripada URL HTTP (http: //) bukannya fail://. Ini membolehkan CORS berfungsi dengan betul.
Kod Disemak:
$.getJSON('http://www.panoramio.com/wapi/data/get_photos?v=1&key=dummykey&tag=test&offset=0&length=20&minx=-30&miny=0&maxx=0&maxy=150&callback=?', function (data) {
// Process data
});
Salin selepas log masuk
Petua Penyelesaian Masalah:
- Pastikan sintaks JSONP (cth., URL mengandungi panggilan balik=?) untuk $.get permintaan.
- Gunakan URL HTTP untuk permintaan XMLHttpRequest silang asal.
- Sahkan sokongan penyemak imbas untuk CORS (cth., Opera dan Internet Explorer mungkin tidak menyokongnya sepenuhnya).
Atas ialah kandungan terperinci Mengapa Saya Mendapat 'Origin null is not allowed by Access-Control-Allow-Origin' Apabila Mengambil Imej melalui AJAX daripada URL file://?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!