Meminta Data daripada Domain Berbeza menggunakan AJAX
Walaupun kebimbangan keselamatan yang dikaitkan dengan panggilan Ajax merentas domain, terdapat situasi apabila mendapatkan data daripada laman web luaran adalah perlu. Soalan ini menyiasat kemungkinan untuk mencapai pertukaran data sedemikian, dengan mengambil kira sekatan yang wujud.
Halangan utama untuk panggilan Ajax merentas domain ialah Dasar Asal Sama (SOP) penyemak imbas. Dasar ini melarang permintaan Ajax terus ke URL pada domain yang berbeza. Seperti yang dicadangkan oleh soalan, percubaan untuk membuat panggilan Ajax ke "http://www.google.com" akan disekat oleh penyemak imbas.
Semasa menetapkan dataType kepada "jsonp" membenarkan panggilan merentas domain , ia memperkenalkan cabaran baharu. Respons daripada tapak web luaran tidak akan berada dalam format JSON, yang membawa kepada ralat sintaks apabila cuba menghuraikannya.
Penyelesaian: Menggunakan Bahasa Bahagian Pelayan sebagai Proksi
Sejak panggilan Ajax langsung tidak dibenarkan kerana SOP, penyelesaiannya terletak pada menggunakan bahasa sebelah pelayan untuk bertindak sebagai proksi. Bahasa ini boleh mengambil data daripada tapak web luaran yang diingini dan kemudian mengembalikannya ke penyemak imbas pelanggan.
Satu pendekatan untuk melaksanakan perkara ini digambarkan dalam coretan kod yang disediakan. Bahagian jQuery kod membuat permintaan Ajax kepada skrip PHP bernama "proxy.php", menghantar alamat tapak web luaran sebagai parameter. Setelah menerima respons daripada tapak web luaran, skrip PHP (proxy.php) hanya menggemakan kandungannya. Dengan cara ini, penyemak imbas menerima data daripada tapak web luaran tanpa melanggar SOP.
Adalah penting untuk ambil perhatian bahawa kaedah ini melibatkan penghantaran data (dalam kes ini, alamat tapak web luaran) ke pelayan- skrip sampingan, menjadikannya penting untuk mempertimbangkan implikasi dari segi keselamatan dan privasi data.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan Data daripada Domain Berbeza Menggunakan AJAX, Memandangkan Dasar Asal Yang Sama?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!