"Akses merentas domain" pihak pelanggan sentiasa menyusahkan, dengan bantuan jQuery, masalah merentas domain telah diselesaikan sejak jQuery-1.2. Memandangkan saya menghadapi masalah merentas domain dalam projek, saya mengambil peluang ini untuk menyiasat isu merentas domain, merujuk maklumat yang berkaitan dan amalan saya sendiri, dan akhirnya menyelesaikan masalah merentas domain. Catat untuk rujukan.
jQuery.ajax() menyokong kaedah mendapatkan merentas domain, yang sebenarnya dilakukan menggunakan jsonp.
Kes sebenar:
Kaedah ini sebenarnya adalah enkapsulasi lanjutan bagi api $.ajax({..}) dalam contoh di atas Beberapa parameter asas api $.ajax dirangkumkan dan tidak kelihatan.
Di bahagian pelayan, gunakan callback= request.getParameter("callback") untuk mendapatkan jsonp32440980 dipanggil semula kemudian di sebelah jQuery
Kemudian kembalikan sesuatu seperti: "jsonp32440980(" tatasusunan json untuk dikembalikan ")";
jquery akan memuatkan secara dinamik dan memanggil ini melalui kaedah panggil balik: jsonp32440980 (tatasusunan json
).
Ini mencapai tujuan pertukaran data merentas domain
Prinsip paling asas jsonp ialah: penambahan satu secara dinamik adalah konsisten (ruang qq menggunakan kaedah ini untuk mencapai pertukaran data merentas domain). JSONP ialah sejenis gelagat suntikan skrip (Suntikan Skrip), jadi ia juga mempunyai risiko keselamatan tertentu.
Ini kerana walaupun penggunaan siaran untuk menjana iframe secara dinamik boleh mencapai tujuan merentas domain siaran (beginilah cara pakar js menampal jquery1.2.5), ini adalah kaedah yang agak melampau dan tidak disyorkan. Ia juga boleh dikatakan bahawa kaedah akses merentas domain mendapatkan adalah sah, dan kaedah siaran dianggap tidak sah dari perspektif keselamatan Adalah lebih baik untuk tidak menyiarkan sebagai pilihan terakhir Permintaan untuk akses merentas domain pada pelanggan side nampaknya telah menarik perhatian w3c Menurut maklumat, html5 Standard WebSocket menyokong pertukaran data merentas domain dan harus menjadi penyelesaian pertukaran data merentas domain pilihan pada masa hadapan.