


Ringkaskan tiga kaedah untuk melaksanakan rentas domain Ajax dalam PHP
Dengan populariti pemisahan bahagian hadapan dan belakang, ia telah menjadi operasi biasa dalam pembangunan web untuk bahagian hadapan untuk memanggil antara muka bahagian belakang dan mendapatkan data melalui teknologi Ajax.
Walau bagaimanapun, disebabkan dasar asal penyemak imbas yang sama, halaman web daripada sumber yang berbeza (protokol, nama domain atau port yang berbeza) tidak boleh mengakses DOM dan kuki masing-masing, yang menjadikan akses merentas domain sebagai keperluan yang sangat biasa. Terdapat banyak cara untuk menyelesaikan masalah ini.
Artikel ini akan memperkenalkan tiga cara untuk melaksanakan rentas domain Ajax dalam PHP.
1. JSONP
JSONP (JSON dengan Padding) ialah penyelesaian yang sangat popular apabila bahagian hadapan memulakan permintaan merentas domain. Ia sebenarnya satu cara untuk "menipu" penyemak imbas, mengambil kesempatan daripada fakta bahawa teg <script>
tidak mempunyai sekatan merentas domain untuk mencapai akses merentas domain. Prinsipnya adalah untuk menjana coretan kod JavaScript secara dinamik untuk membalas permintaan pada bahagian pelayan Coretan kod akan memanggil fungsi JavaScript dengan nama tertentu (nama fungsi panggil balik) dan menghantar data yang diproses oleh bahagian pelayan sebagai parameter kepada. fungsi ini. Ini mencapai kesan akses merentas domain.
JSONP digunakan seperti berikut:
- Kod pelanggan:
function handleJsonp(data) { console.log(data); } const script = document.createElement('script'); script.src = 'http://example.com/api?callback=handleJsonp'; document.head.appendChild(script);
- Kod pelayan:
<?php $data = array('foo' => 'bar'); $callback = $_GET['callback']; echo sprintf('%s(%s);', $callback, json_encode($data)); ?>
Dalam kod ini, hasil pemulangan daripada pelayan ialah coretan kod JavaScript yang mengandungi panggilan fungsi panggil balik Selepas pelanggan mendapat data, ia akan secara automatik melaksanakan fungsi panggil balik dan menggunakan data yang dikembalikan oleh pelayan sebagai parameter. daripada fungsi panggil balik. Kelebihan
JSONP ialah keserasian yang baik Keserasian hanya terhad oleh sejauh mana penyemak imbas menyokong teg <script>
Walau bagaimanapun, kelemahannya ialah terdapat isu keselamatan kerana fungsi panggil balik dilaksanakan pelanggan dan kami tidak dapat menjaminnya. Fungsi ini melaksanakan logik yang kami jangkakan Jika fungsi panggil balik berniat jahat melepasi kod berniat jahat, akan ada risiko diserang oleh XSS.
2. Mod proksi
Mod proksi ialah satu lagi penyelesaian merentas domain yang popular. Idea asasnya ialah untuk menyediakan proksi pada pelayan untuk mengakses URL yang ditentukan, dan kemudian mengembalikan data yang diperoleh daripada pelayan proksi kepada klien. Dengan cara ini, pelanggan boleh terus mengakses pelayan proksi daripada sumber yang sama, dan pelayan proksi kemudian mengakses pelayan sasaran merentas domain dan memajukan data yang dikembalikan oleh pelayan sasaran.
Mod proksi digunakan seperti berikut:
- Kod pelanggan:
fetch('http://example.com/proxy_api') .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));
- Kod pelayan:
<?php $url = 'http://example.com/api'; $data = json_decode(file_get_contents($url), true); echo json_encode($data); ?>
Dalam kod ini, permintaan pelanggan dihantar ke pelayan proksi Pelayan proksi mengembalikan data yang dikembalikan oleh pelayan sasaran kepada pelanggan, dengan itu merealisasikan permintaan pelanggan untuk akses merentas domain.
Kelebihan mod proksi ialah keselamatan yang baik, kerana pelanggan hanya akan mengakses pelayan proksi asal yang sama, dan pelayan proksi kemudiannya akan mengakses pelayan sasaran merentas domain, dengan itu berkesan mengelakkan keselamatan yang disebabkan oleh akses merentas domain berisiko, tetapi kelemahannya ialah kod sebelah pelayan tambahan perlu dibangunkan, yang meningkatkan beban kerja tambahan dan kos pembangunan.
3. CORS
CORS ialah penyelesaian akses merentas domain yang paling popular. Ia menetapkan pengepala respons pada pelayan untuk memberitahu pelanggan sama ada untuk membenarkan akses merentas domain, dengan itu mencapai kawalan keselamatan akses merentas domain.
CORS digunakan seperti berikut:
- Kod pelanggan:
fetch('http://example.com/api', { mode: 'cors' }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));
- Kod pelayan:
<?php header('Access-Control-Allow-Origin: *'); $data = array('foo' => 'bar'); echo json_encode($data); ?>
Dalam kod ini, pelayan menetapkan pengepala respons Access-Control-Allow-Origin:*
, menunjukkan bahawa semua sumber dibenarkan untuk mengakses antara muka Pelanggan memberitahu penyemak imbas bahawa permintaan akan diteruskan dengan menetapkan parameter mode: 'cors'
dalam permintaan. Akses merentas domain.
Kelebihan CORS ialah ia menyokong secara asli dan tidak memerlukan kerja pembangunan tambahan Namun, kelemahannya ialah ia tidak menyokong IE8/9 dan perlu disokong daripada pelayan -akses domain nama subdomain.
Di atas ialah tiga kaedah merentas domain untuk PHP melaksanakan Ajax Dalam projek sebenar, anda harus memilih penyelesaian merentas domain yang paling sesuai mengikut situasi tertentu.
Atas ialah kandungan terperinci Ringkaskan tiga kaedah untuk melaksanakan rentas domain Ajax dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Laravel memudahkan mengendalikan data sesi sementara menggunakan kaedah flash intuitifnya. Ini sesuai untuk memaparkan mesej ringkas, makluman, atau pemberitahuan dalam permohonan anda. Data hanya berterusan untuk permintaan seterusnya secara lalai: $ permintaan-

Pelanjutan URL Pelanggan PHP (CURL) adalah alat yang berkuasa untuk pemaju, membolehkan interaksi lancar dengan pelayan jauh dan API rehat. Dengan memanfaatkan libcurl, perpustakaan pemindahan fail multi-protokol yang dihormati, php curl memudahkan execu yang cekap

Alipay Php ...

Laravel menyediakan sintaks simulasi respons HTTP ringkas, memudahkan ujian interaksi HTTP. Pendekatan ini dengan ketara mengurangkan redundansi kod semasa membuat simulasi ujian anda lebih intuitif. Pelaksanaan asas menyediakan pelbagai jenis pintasan jenis tindak balas: Gunakan Illuminate \ Support \ Facades \ http; Http :: palsu ([ 'Google.com' => 'Hello World', 'github.com' => ['foo' => 'bar'], 'forge.laravel.com' =>

Adakah anda ingin memberikan penyelesaian segera, segera kepada masalah yang paling mendesak pelanggan anda? Sembang langsung membolehkan anda mempunyai perbualan masa nyata dengan pelanggan dan menyelesaikan masalah mereka dengan serta-merta. Ia membolehkan anda memberikan perkhidmatan yang lebih pantas kepada adat anda

Artikel membincangkan pengikatan statik lewat (LSB) dalam PHP, yang diperkenalkan dalam Php 5.3, yang membolehkan resolusi runtime kaedah statik memerlukan lebih banyak warisan yang fleksibel. Isu: LSB vs polimorfisme tradisional; Aplikasi Praktikal LSB dan Potensi Perfo

Artikel membincangkan ciri -ciri keselamatan penting dalam rangka kerja untuk melindungi daripada kelemahan, termasuk pengesahan input, pengesahan, dan kemas kini tetap.

Artikel ini membincangkan menambah fungsi khusus kepada kerangka kerja, memberi tumpuan kepada pemahaman seni bina, mengenal pasti titik lanjutan, dan amalan terbaik untuk integrasi dan debugging.
