Rumah > pembangunan bahagian belakang > tutorial php > Mengapakah saya mendapat ralat \'Respons for preflight mempunyai kod status HTTP tidak sah 404\' semasa membuat permintaan AngularJS POST?

Mengapakah saya mendapat ralat \'Respons for preflight mempunyai kod status HTTP tidak sah 404\' semasa membuat permintaan AngularJS POST?

Barbara Streisand
Lepaskan: 2024-11-03 14:15:03
asal
293 orang telah melayarinya

Why am I getting a

AngularJS POST Gagal: Memahami CORS dan Permintaan Preflight

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>
Salin selepas log masuk

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:

  • Pastikan bahawa pengepala Access-Control-Allow-Origin ditetapkan kepada '*' untuk membenarkan permintaan dari mana-mana asal.
  • Pertimbangkan untuk melumpuhkan semakan CORS pada bahagian klien jika ia tidak diperlukan untuk anda aplikasi.
  • Tetapkan pengepala Access-Control-Max-Age untuk menentukan berapa lama penyemak imbas harus cache pengepala tindak balas pra-penerbangan 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!

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