Rumah > hujung hadapan web > tutorial js > Bagaimanakah jQuery AJAX Boleh Mengatasi Sekatan Dasar Asal Sama untuk Komunikasi Merentas Domain?

Bagaimanakah jQuery AJAX Boleh Mengatasi Sekatan Dasar Asal Sama untuk Komunikasi Merentas Domain?

Mary-Kate Olsen
Lepaskan: 2024-12-22 22:23:18
asal
188 orang telah melayarinya

How Can jQuery AJAX Overcome Same-Origin Policy Restrictions for Cross-Domain Communication?

jQuery AJAX Komunikasi Merentas Domain

Permintaan AJAX merentas domain menghadapi pengehadan disebabkan oleh sekatan Dasar Same-Origin. Apabila skrip klien pada satu domain cuba mengakses sumber daripada domain lain, ia biasanya gagal disebabkan oleh kebimbangan keselamatan.

Kes:

Pertimbangkan kes di mana ujian. php berada pada localhost, manakala testserver.php dihoskan pada pelayan web. Permintaan AJAX daripada test.php ke testserver.php akan gagal, mencetuskan makluman "Ralat" disebabkan sifat permintaan merentas domain.

Penyelesaian:

Untuk mengatasi had ini, JSONP (JSON dengan Padding) boleh bekerja.

jQuery:

$.ajax({
  url: "testserver.php",
  dataType: "jsonp", // Note the lowercase 'p' in JSONP
  success: function (json) {
    // Handle successful response
    alert("Success");
  },
  error: function () {
    alert("Error");
  }
});
Salin selepas log masuk

PHP:

<?php
$arr = array("element1", "element2", array("element31", "element32"));
$arr['name'] = "response";
echo $_GET['callback'] . "(" . json_encode($arr) . ");";
?>
Salin selepas log masuk

Dalam PHP, nama fungsi panggil balik diluluskan oleh jQuery tersedia melalui $_GET['panggilan balik']. Dengan menggemakan respons dalam format "callbackName('jsonString')", kami membenarkan jQuery mentafsir data JSON.

Alternatif:

jQuery menyediakan kaedah ringkas dipanggil $.getJSON() yang memudahkan permintaan AJAX merentas domain. Walau bagaimanapun, ia memerlukan penambahan "panggilan balik=?" ke URL sebagai parameter GET. jQuery secara automatik menggantikan ruang letak ini dengan kaedah panggil balik yang dijana.

Atas ialah kandungan terperinci Bagaimanakah jQuery AJAX Boleh Mengatasi Sekatan Dasar Asal Sama untuk Komunikasi Merentas Domain?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan