Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Komunikasi PHP: Bagaimana untuk mencapai penghantaran data merentas domain?

Komunikasi PHP: Bagaimana untuk mencapai penghantaran data merentas domain?

王林
王林asal
2023-08-20 11:17:121015semak imbas

Komunikasi PHP: Bagaimana untuk mencapai penghantaran data merentas domain?

Komunikasi PHP: Bagaimana untuk mencapai penghantaran data merentas domain?

Pengenalan:
Dalam pembangunan web, selalunya perlu untuk merealisasikan penghantaran data antara nama domain yang berbeza, yang memerlukan komunikasi merentas domain. Artikel ini akan memperkenalkan cara menggunakan bahasa PHP untuk mencapai penghantaran data merentas domain dan melampirkan contoh kod.

1. Apakah komunikasi merentas domain?
Komunikasi merentas domain merujuk kepada proses penghantaran data antara nama domain yang berbeza dalam pembangunan web. Biasanya, penyemak imbas menghalang halaman daripada menghantar permintaan atau menerima respons kepada pelayan dalam domain yang berbeza disebabkan oleh pengehadan dasar asal yang sama. Oleh itu, untuk mencapai komunikasi data antara domain yang berbeza, kita perlu mencari jalan untuk memintas sekatan dasar asal yang sama.

2. Kaedah komunikasi merentas domain

  1. JSONP: Dengan membuat teg secara dinamik dalam halaman, penghantaran data merentas domain dicapai. Pelayan perlu mengembalikan sekeping kod JS yang melaksanakan fungsi panggil balik yang ditentukan, supaya halaman boleh mendapatkan data dan memprosesnya.
  2. CORS: Perkongsian sumber merentas domain ialah kaedah komunikasi merentas domain standard yang membolehkan halaman dalam domain berbeza menghantar permintaan merentas domain melalui konfigurasi yang berkaitan di bahagian pelayan. Pelayan perlu mengembalikan maklumat pengepala respons khusus untuk menunjukkan sama ada akses merentas domain dibenarkan.
  3. iframe + window.postMessage: Berkomunikasi dengan membenamkan
  4. Kaedah proksi: Buat permintaan data pada bahagian pelayan halaman sumber yang sama, dan kemudian kembalikan data kepada klien. Pelanggan memperoleh data dengan mengakses pelayan asal yang sama, dengan itu memintas isu merentas domain.

3. Gunakan PHP untuk melaksanakan komunikasi merentas domain JSONP
JSONP ialah kaedah komunikasi merentas domain yang mudah, yang lebih sesuai untuk penghantaran data yang ringkas. Berikut ialah contoh:

<?php
// 获取传入的回调函数名
$callback = $_GET['callback'];

// 需要返回的数据
$data = ['name' => 'John', 'age' => 25];

// 返回JSONP格式的数据
echo $callback . '(' . json_encode($data) . ')';
?>

Dalam kod di atas, mula-mula dapatkan nama fungsi panggil balik masuk melalui $_GET['panggilan balik']. Kemudian, bina data yang perlu dikembalikan dan gunakan fungsi json_encode() untuk menukar data ke dalam format JSON. Akhir sekali, nama fungsi panggil balik dan data JSON digabungkan dan dikeluarkan.

Dalam kod pelanggan, buat permintaan dengan membuat teg pada halaman dan tetapkan atribut src untuk mencapai pemerolehan data merentas domain. Contohnya:

<script>
function handleData(data) {
    console.log(data);
}

var script = document.createElement('script');
script.src = 'http://example.com/api.php?callback=handleData';
document.getElementsByTagName('head')[0].appendChild(script);
</script>

Dalam kod di atas, buat teg dan tetapkan atribut src kepada URL API dan masukkan nama fungsi panggil balik handleData. Apabila pelayan mengembalikan data, fungsi panggil balik dilaksanakan secara automatik dan data dihantar masuk sebagai parameter, dengan itu mencapai pemerolehan data merentas domain.

Kesimpulan:
Dengan menggunakan kaedah komunikasi silang domain yang berbeza, kita boleh mencapai penghantaran data antara domain yang berbeza dalam pembangunan web. Artikel ini memperkenalkan kaedah menggunakan JSONP untuk mencapai komunikasi merentas domain dalam PHP dan menyediakan contoh kod yang sepadan. Dalam pembangunan sebenar, kaedah komunikasi silang domain yang sesuai dipilih mengikut keperluan supaya data boleh dipindahkan dan diproses antara domain yang berbeza.

Atas ialah kandungan terperinci Komunikasi PHP: Bagaimana untuk mencapai penghantaran data merentas domain?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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