Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menangani isu Perkongsian Sumber Silang (CORS) dalam pembangunan PHP?

Bagaimana untuk menangani isu Perkongsian Sumber Silang (CORS) dalam pembangunan PHP?

PHPz
PHPzasal
2023-11-02 18:39:241049semak imbas

Bagaimana untuk menangani isu Perkongsian Sumber Silang (CORS) dalam pembangunan PHP?

Bagaimana untuk menangani isu Perkongsian Sumber Silang (CORS) dalam pembangunan PHP?

Dalam pembangunan web, Perkongsian Sumber Silang Asal (CORS) adalah masalah biasa. Ia merujuk kepada apabila halaman web meminta sumber silang asal (contohnya, daripada nama domain yang berbeza), penyemak imbas menggunakan mekanisme khas untuk menyekat atau menyekat akses kepada sumber tersebut. Ini adalah untuk memastikan keselamatan dan privasi, tetapi kadangkala kita perlu menangani isu CORS dalam pembangunan PHP. Jadi, bagaimana untuk menyelesaikan masalah ini?

1. Fahami CORS

Mekanisme CORS dilaksanakan oleh pelayar. Apabila penyemak imbas mengesan bahawa halaman web semasa meminta sumber merentas domain, penyemak imbas akan menghantar permintaan prapenerbangan (PILIHAN) dan pelayan akan mengembalikan respons kepada permintaan itu, memberitahu penyemak imbas sama ada untuk membenarkan permintaan merentas domain . Jika respons yang dikembalikan oleh pelayan mengandungi maklumat pengepala yang membenarkan permintaan silang asal, penyemak imbas akan menghantar permintaan sebenar. Jika tidak, penyemak imbas akan memaparkan ralat.

2. Kaedah untuk menangani isu CORS

Dalam pembangunan PHP, kita boleh menggunakan kaedah berikut untuk menangani isu CORS:

  1. Tetapkan maklumat pengepala Access-Control-Allow-Origin

Gunakan pengepala() fungsi Untuk menetapkan maklumat pengepala respons, tetapkan Access-Control-Allow-Origin kepada "*" untuk membenarkan akses merentas domain daripada mana-mana nama domain. Contohnya:

header("Access-Control-Allow-Origin: *");

Nota: Menetapkan Access-Control-Allow-Origin kepada "*" akan membenarkan akses merentas domain daripada mana-mana nama domain, yang mungkin merupakan risiko keselamatan. Dalam pembangunan sebenar, adalah disyorkan untuk menetapkan nama domain yang dibenarkan untuk diakses mengikut keperluan tertentu.

  1. Tetapkan maklumat pengepala Access-Control-Allow-Methods

Dengan menetapkan maklumat pengepala Access-Control-Allow-Methods, kami boleh menentukan kaedah permintaan merentas domain yang dibenarkan. Contohnya, jika kami membenarkan akses merentas domain untuk permintaan GET dan POST, kami boleh menetapkan Access-Control-Allow-Methods kepada "GET, POST". Kod sampel adalah seperti berikut:

header("Access-Control-Allow-Methods: GET, POST");
  1. Mengendalikan permintaan prapenerbangan

Permintaan pra penerbangan (PILIHAN) digunakan untuk menyemak pelayan sebelum permintaan sebenar. Kami boleh menentukan dalam kod PHP bahawa apabila kaedah permintaan ialah OPTIONS, respons dengan maklumat pengepala Access-Control-Allow-Origin akan dikembalikan. Contohnya:

if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
  header("Access-Control-Allow-Origin: *");
  header("Access-Control-Allow-Methods: GET, POST");
  exit;
}

Dengan cara ini, kami boleh mengendalikan permintaan prapenerbangan dan mengembalikan maklumat pengepala silang asal yang dibenarkan.

  1. Tetapkan maklumat pengepala Access-Control-Allow-Headers

Kadangkala, permintaan merentas domain membawa beberapa maklumat pengepala khusus, seperti pengepala Kebenaran. Secara lalai, penyemak imbas menyekat permintaan silang asal dengan pengepala ini. Untuk membenarkan permintaan merentas domain membawa maklumat pengepala ini, kami perlu menetapkan maklumat pengepala Access-Control-Allow-Headers pada bahagian pelayan. Kod sampel adalah seperti berikut:

header("Access-Control-Allow-Headers: Authorization");

Dengan cara ini, kami boleh membenarkan permintaan merentas domain untuk membawa maklumat pengepala Keizinan.

3. Ringkasan

Dalam pembangunan PHP, menangani isu perkongsian sumber merentas domain (CORS) merupakan isu penting yang mesti dipertimbangkan. Dengan memahami mekanisme CORS dan menggunakan fungsi pengepala() untuk menetapkan maklumat pengepala respons, kami boleh menyelesaikan masalah ini dengan mudah. Dengan menetapkan maklumat pengepala seperti Access-Control-Allow-Origin, Access-Control-Allow-Methods, Access-Control-Allow-Header, dsb., kami boleh mengawal akses kepada sumber merentas domain dan meningkatkan keselamatan dan privasi laman web. Oleh itu, dalam pembangunan PHP, adalah penting untuk mengendalikan isu CORS dengan betul.

Atas ialah kandungan terperinci Bagaimana untuk menangani isu Perkongsian Sumber Silang (CORS) dalam pembangunan PHP?. 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