Pengenalan
Melaksanakan interaksi HTTP, khususnya permintaan POST, antara AngularJS aplikasi dan pelayan belakang kadangkala boleh menghadapi masalah. Satu mesej ralat biasa yang dihadapi ialah "Respons for preflight has invalid HTTP status code 404." Artikel ini bertujuan untuk menjelaskan ralat ini dan memberikan penyelesaian.
CORS dan Permintaan Preflight
Perkongsian Sumber Silang Asal (CORS) ialah mekanisme yang digunakan oleh penyemak imbas untuk mengurus permintaan rangkaian antara asal yang berbeza. Apabila penyemak imbas menghantar permintaan daripada asal (cth., http://localhost:8080) ke asal lain (cth., http://example.com), ia mula-mula menghantar permintaan pra-penerbangan dengan kaedah OPTIONS untuk menentukan sama ada pelayan membenarkan permintaan sebenar.
Memahami Ralat
Ralat "Respons for preflight has invalid HTTP status code 404" menunjukkan bahawa permintaan preflight OPTIONS yang dihantar oleh penyemak imbas adalah mengembalikan kod status HTTP 404 (Tidak Ditemui). Ini bermakna pelayan tidak bertindak balas dengan betul kepada permintaan prapenerbangan.
Penyelesaian
Penyelesaian kepada ralat ini terletak pada pengendalian permintaan prapenerbangan CORS dengan betul di bahagian pelayan . Dalam contoh SlimPHP yang diberikan dalam soalan, isunya ialah permintaan prapenerbangan tidak dikendalikan dan mengembalikan kod status 404.
Untuk membetulkannya, seseorang perlu menambah kod berikut pada pelayan SlimPHP:
<code class="php">$app->options('/{routes:.+}', function ($request, $response, $args) { return $response; });</code>
Kod ini mentakrifkan pengendali permintaan pra-penerbangan CORS untuk semua laluan dalam aplikasi. Ia menetapkan pengepala CORS yang diperlukan dan mengembalikan respons kosong.
Petua Tambahan
Selain itu, petua berikut boleh membantu mencegah isu berkaitan CORS:
Dengan mengikut langkah ini, anda boleh menyelesaikan berkaitan CORS isu dan buat permintaan POST yang berjaya daripada aplikasi AngularJS.
Atas ialah kandungan terperinci Mengapakah saya mendapat ralat \'Respons for preflight mempunyai kod status HTTP tidak sah 404\' semasa membuat permintaan AngularJS POST?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!