Mengapa pelaksanaan CORS saya tidak berfungsi dalam PHP?

Barbara Streisand
Lepaskan: 2024-11-04 10:24:29
asal
416 orang telah melayarinya

Why is my CORS implementation not working in PHP?

CORS Tidak Berfungsi dalam PHP: Kes Selesai

Melaksanakan Perkongsian Sumber Rentas Asal (CORS) untuk memudahkan pertukaran data merentas asal yang berbeza adalah cabaran bersama. Walau bagaimanapun, menghadapi ralat berkaitan CORS boleh mengecewakan.

Seorang pengguna baru-baru ini melaporkan menghadapi masalah dengan CORS semasa cuba menyerahkan data borang daripada www.siteone.com ke www.sitetwo.com. Walaupun melaksanakan tetapan pengepala yang diperlukan dalam fail "cors.php" pada domain sasaran, pengguna menerima ralat "Access-control-Allow-Origin".

Analisis dan Penyelesaian:

Setelah meneliti kod dan pengepala, didapati bahawa pelaksanaan awal pengepala CORS tidak lengkap. Coretan kod berikut yang digunakan dalam "cors.php" tidak mencukupi:

<code class="php">header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST, GET, OPTIONS');</code>
Salin selepas log masuk

Untuk mengendalikan permintaan CORS secara menyeluruh, respons yang lebih terperinci diperlukan. Kod dikemas kini berikut memberikan penyelesaian yang sah:

<code class="php">// Allow from any origin
if (isset($_SERVER['HTTP_ORIGIN'])) {
    header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}");
    header('Access-Control-Allow-Credentials: true');
    header('Access-Control-Max-Age: 86400');    // cache for 1 day
}

// Access-Control headers are received during OPTIONS requests
if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {

    if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD']))
        header("Access-Control-Allow-Methods: GET, POST, OPTIONS");         

    if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']))
        header("Access-Control-Allow-Headers:        {$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}");

    exit(0);
}

echo "You have CORS!";</code>
Salin selepas log masuk

Kesimpulan:

Ralat pelaksanaan CORS telah diselesaikan dengan memasukkan baris kod tambahan yang membenarkan permintaan daripada mana-mana asal , membolehkan bukti kelayakan dan tetapkan tempoh cache. Pengendalian CORS yang dipertingkatkan ini memastikan pertukaran data rentas asal berjaya.

Atas ialah kandungan terperinci Mengapa pelaksanaan CORS saya tidak berfungsi dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan