Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah PHP mengendalikan permintaan merentas domain dan kawalan akses?

Bagaimanakah PHP mengendalikan permintaan merentas domain dan kawalan akses?

WBOY
WBOYasal
2023-06-30 23:04:371788semak imbas

Bagaimanakah PHP mengendalikan permintaan merentas domain dan kawalan akses?

Abstrak:
Dengan pembangunan aplikasi Internet, permintaan merentas domain dan kawalan akses telah menjadi isu penting dalam pembangunan PHP. Artikel ini akan memperkenalkan kaedah dan teknik tentang cara PHP mengendalikan permintaan merentas domain dan kawalan akses, bertujuan untuk membantu pembangun lebih memahami dan menangani isu ini.

  1. Apakah permintaan merentas domain?
    Permintaan merentas domain bermaksud bahawa dalam penyemak imbas, halaman web dalam satu domain meminta untuk mengakses sumber dalam domain lain. Permintaan merentas domain biasanya berlaku dalam permintaan AJAX, rujukan imej/skrip/css, dsb. Disebabkan dasar asal yang sama penyemak imbas, permintaan silang asal dilarang secara lalai.
  2. Penyelesaian kepada permintaan merentas domain
    Untuk menyelesaikan masalah permintaan merentas domain, kaedah berikut boleh digunakan:

2.1 JSONP (JSON dengan padding)
JSONP ialah penyelesaian kepada permintaan merentas domain, yang mana mencipta skrip secara dinamik tag untuk mendapatkan data. Data yang dikembalikan oleh pelayan perlu dibungkus dalam fungsi panggil balik Penyemak imbas melaksanakan fungsi panggil balik ini untuk mendapatkan data yang dikembalikan oleh pelayan.

2.2 CORS (Cross-Origin Resource Sharing)
CORS ialah mekanisme yang menyokong tetapan pada bahagian pelayan, membolehkan pelayan memberitahu penyemak imbas sumber mana yang dibenarkan oleh pelayan akses. Dalam PHP, kita boleh melaksanakan CORS dengan menetapkan maklumat pengepala respons.

  1. Bagaimanakah PHP mengendalikan permintaan merentas domain dan kawalan akses?
    PHP mengendalikan permintaan merentas domain dan kawalan akses seperti berikut:

3.1 Penyelesaian JSONP
PHP boleh menjana kod javascript yang mengandungi data secara dinamik berdasarkan parameter panggil balik yang dihantar oleh pelanggan, contohnya:

<?php
$data = array('name' => 'John', 'age' => 18);
$callback = $_GET['callback'];
echo $callback . '(' . json_encode($data) . ')';
?>

3.2 CORSPH solution
dilaksanakan dengan menetapkan maklumat pengepala respons, contohnya:

<?php
header("Access-Control-Allow-Origin: http://example.com");// 允许http://example.com域名访问
header("Access-Control-Allow-Methods: GET, POST, OPTIONS");// 允许GET、POST、OPTIONS方法
header("Access-Control-Allow-Headers: Content-Type");// 允许Content-Type请求头
?>
  1. Nota tentang kawalan akses dalam PHP
    Apabila menggunakan penyelesaian CORS, anda perlu memberi perhatian kepada perkara berikut:

4.1 Bukti kelayakan
Jika anda perlu merentas domain Untuk menghantar bukti kelayakan (seperti kuki, maklumat pengesahan HTTP) dalam permintaan, anda perlu menetapkan "Access-Control-Allow-Credentials" kepada benar dan tetapkan "withCredentials" kepada benar pada bahagian permintaan.

4.2 Permintaan prapenerbangan (Preflight)
Apabila syarat berikut dipenuhi, penyemak imbas akan menghantar permintaan prapenerbangan (PILIHAN) untuk mendapatkan maklumat kebenaran pelayan:

  • Gunakan kaedah permintaan bukan mudah seperti PUT dan DELETE
  • Kandungan - Jenis ialah aplikasi/json dan pengepala permintaan bukan mudah lain

Kod PHP perlu memproses permintaan prapenerbangan dan mengembalikan maklumat pengepala respons yang betul.

  1. Ringkasan
    Permintaan merentas domain dan kawalan akses ialah masalah biasa yang dihadapi dalam pembangunan PHP. Artikel ini memperkenalkan dua penyelesaian: JSONP dan CORS. Pembangun boleh memilih kaedah yang sesuai untuk menyelesaikan permintaan merentas domain dan isu kawalan akses berdasarkan senario aplikasi tertentu. Pada masa yang sama, anda juga perlu memberi perhatian kepada butiran yang berkaitan seperti kelayakan dan permintaan prapenerbangan. Saya harap artikel ini dapat memberikan sedikit bantuan kepada pembangun PHP dalam menyelesaikan masalah merentas domain.

Atas ialah kandungan terperinci Bagaimanakah PHP mengendalikan permintaan merentas domain dan kawalan akses?. 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