Rumah > Artikel > pembangunan bahagian belakang > Apakah itu akses merentas domain? Bagaimana untuk menetapkan kebenaran akses menggunakan PHP
Masalah akses merentas domain ialah masalah biasa dalam pembangunan bahagian hadapan. Apabila kami meminta sumber daripada domain lain yang berbeza melalui Ajax atau mengambil dalam halaman web atau aplikasi, masalah akses merentas domain berlaku. Jika kami tidak menetapkan kebenaran yang berkaitan, akses merentas domain seperti ini tidak akan dibenarkan oleh penyemak imbas. Artikel ini akan memperkenalkan cara menetapkan kebenaran akses merentas domain menggunakan PHP.
1. Apakah itu akses merentas domain?
Akses merentas domain merujuk kepada halaman Web dalam satu domain yang mengakses sumber Web (seperti skrip, helaian gaya, gambar, dll.) dalam domain lain). Akses merentas domain melibatkan mekanisme keselamatan penyemak imbas dan dihadkan atas sebab keselamatan.
Apabila kami menggunakan Ajax atau mengambil dalam halaman Web untuk meminta sumber Web dalam domain lain, masalah merentas domain akan berlaku. Penyemak imbas akan mengeluarkan mesej ralat yang serupa dengan "Akses kepada XMLHttpRequest di 'http://abc.com/api/getdata' dari asal 'http://xyz.com' telah disekat oleh dasar CORS" pada konsol, yang ialah, merentas Permintaan domain telah dipintas oleh penyemak imbas.
2. Mengapakah anda perlu menetapkan kebenaran akses merentas domain
Untuk memastikan keselamatan aplikasi web, penyemak imbas mengehadkan permintaan merentas domain. Jika kami tidak menetapkan kebenaran akses merentas domain yang berkaitan, permintaan merentas domain akan dilarang oleh penyemak imbas dan data yang sepadan tidak boleh diperolehi. Untuk sesetengah aplikasi dengan bahagian hadapan dan belakang yang berasingan atau aplikasi yang perlu mengakses antara muka API, sekatan permintaan merentas domain akan menjadi halangan dan menjejaskan operasi biasa aplikasi web.
3. Cara menetapkan kebenaran akses merentas domain dalam PHP
PHP ialah bahasa pembangunan web berdasarkan bahasa skrip sebelah pelayan Kami boleh menetapkan kebenaran akses merentas domain dalam PHP. Mari perkenalkan cara untuk menetapkan kebenaran akses merentas domain dalam PHP.
1. Gunakan fungsi pengepala() untuk menetapkan pengepala permintaan merentas domain
Kita boleh menggunakan fungsi pengepala() dalam PHP untuk menetapkan pengepala permintaan merentas domain. Pengepala permintaan merentas domain yang dipanggil ialah pengepala "Access-Control-Allow-Origin" dalam protokol HTTP Fungsinya adalah untuk memberitahu penyemak imbas sama ada permintaan itu dibenarkan akses merentas domain.
Berikut ialah kod sampel:
header('Access-Control-Allow-Origin: *');
Kod ini digunakan untuk menetapkan pengepala "Access-Control-Allow-Origin", yang parameternya ialah "", yang menunjukkan bahawa mana-mana domain dibenarkan Lawati sumber ini. Sudah tentu, kami juga boleh menggantikan "" dengan nama domain yang ditentukan, menunjukkan bahawa hanya nama domain tertentu dibenarkan untuk mengakses sumber tersebut.
2. Tetapkan pengepala permintaan merentas domain lain
Selain pengepala "Access-Control-Allow-Origin", terdapat beberapa pengepala permintaan merentas domain lain, seperti "Akses -Control- Allow-Credentials", "Access-Control-Allow-Methods", "Access-Control-Allow-Headers", dsb. Anda boleh menggunakan kod yang serupa dengan yang berikut untuk menetapkannya:
header('Access-Control-Allow-Credentials: true'); header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS'); header('Access-Control-Allow-Headers: X-Requested-With, Content-Type, Authorization');
Maksud pengepala ini ialah:
3. Mengendalikan permintaan prapenerbangan
Apabila penyemak imbas menghantar beberapa permintaan HTTP, seperti Socket.IO sebenarnya adalah varian HTTP, ia bukan sahaja boleh membuat permintaan mudah ( GET, POST), dan juga boleh melaksanakan permintaan kompleks (PUT, DELETE, OPTIONS, dll.). Dalam kes permintaan yang rumit, penyemak imbas akan menghantar permintaan OPTIONS terlebih dahulu untuk meminta pelayan sama ada untuk membenarkan permintaan merentas domain. Pada masa ini, pelayan perlu mengembalikan pengepala respons yang sepadan Dalam pengepala respons ini, anda boleh menetapkan:
Berikut ialah contoh kod untuk mengendalikan permintaan prapenerbangan:
if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') { header('Access-Control-Allow-Origin: *'); header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS'); header('Access-Control-Allow-Headers: X-Requested-With, Content-Type, Authorization'); exit; }
Kod ini digunakan untuk mengendalikan permintaan OPTIONS, di mana "Access-Control-Allow-Methods" adalah set, pengepala permintaan merentas domain seperti "Kawalan-Akses-Benarkan-Pengepala".
4. Ringkasan
Menetapkan kebenaran akses merentas domain melalui PHP boleh menyelesaikan masalah merentas domain dalam pembangunan bahagian hadapan. Kami boleh menggunakan fungsi pengepala() dalam PHP untuk menetapkan pengepala permintaan merentas domain, dan kami juga boleh menetapkan pengepala permintaan merentas domain lain untuk memenuhi keperluan perniagaan. Apabila memproses permintaan prapenerbangan, kami perlu mengembalikan pengepala respons yang sepadan untuk memberitahu penyemak imbas sama ada sumber itu menyokong permintaan silang asal. Melalui langkah di atas, kami boleh menyelesaikan masalah merentas domain dengan berkesan dan memastikan operasi biasa aplikasi web.
Atas ialah kandungan terperinci Apakah itu akses merentas domain? Bagaimana untuk menetapkan kebenaran akses menggunakan PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!