CORS tidak berfungsi dalam PHP
Apabila cuba menghantar permintaan POST dengan data borang daripada www.siteone.com ke www.sitetwo. com menggunakan CORS, ralat berikut ditemui:
XMLHttpRequest cannot load http://www.sitetwo.com/cors.php. Origin http://www.siteone.com is not allowed by Access-Control-Allow-Origin.
Walaupun mengkonfigurasi pengepala CORS dalam cors.php pada www.sitetwo.com:
<code class="php">header('Access-Control-Allow-Origin: *'); header('Access-Control-Allow-Methods: POST, GET, OPTIONS');</code>
Permintaan masih gagal kerana kepada pelaksanaan konfigurasi pengepala yang tidak betul. Kod dikemas kini yang menangani isu ini ialah:
<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>
Kod yang disemak ini bertindak balas kepada pengepala Kawalan Akses yang diterima semasa permintaan OPTIONS dan membenarkan permintaan dari mana-mana asal, membenarkan CORS berfungsi dengan betul.
Atas ialah kandungan terperinci Mengapa CORS tidak berfungsi dalam aplikasi PHP saya walaupun menetapkan tajuk Access-Control-Allow-Origin?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!