AngularJS POST Request Failure: HTTP 404 for Preflight Request
Dalam AngularJS, ralat "XMLHttpRequest tidak dapat dimuatkan" yang tidak dapat diselesaikan boleh berlaku semasa permintaan POST . Ini disebabkan oleh kod status HTTP yang tidak sah (404) untuk permintaan prapenerbangan yang mendahului POST sebenar. Permintaan prapenerbangan bertujuan untuk menyemak sama ada operasi yang diminta dibenarkan, memastikan pematuhan dengan dasar Perkongsian Sumber Rentas Asal (CORS).
Punca Punca: Pengepala CORS Hilang
Punca asas ralat terletak pada kegagalan pelayan untuk mengendalikan permintaan OPTIONS prapenerbangan dengan betul. Untuk mendayakan permintaan silang asal, pelayan mesti menetapkan pengepala CORS yang sesuai.
Penyelesaian: Menambah Pengepala CORS Bahagian Pelayan
Dalam SlimPHP, anda boleh menambah pengepala CORS ke objek tindak balas:
<code class="php">$app->response()->headers->set('Access-Control-Allow-Headers', 'Content-Type'); $app->response()->headers->set('Content-Type', 'application/json'); $app->response()->headers->set('Access-Control-Allow-Methods', 'GET, POST, OPTIONS'); $app->response()->headers->set('Access-Control-Allow-Origin', '*');</code>
Penyelesaian: Melumpuhkan Permintaan Preflight Client-Side
Sebagai alternatif, anda boleh melumpuhkan permintaan preflight sisi klien dengan menetapkan semula pengepala biasa dalam AngularJS :
<code class="js">app.config(function ($httpProvider) { $httpProvider.defaults.headers.common = {}; $httpProvider.defaults.headers.post = {}; $httpProvider.defaults.headers.put = {}; $httpProvider.defaults.headers.patch = {}; });</code>
Pertimbangan Tambahan
Untuk permintaan POST yang melibatkan data sensitif, anda mungkin perlu melaksanakan mekanisme pengesahan dan kebenaran, seperti JSON Web Token (JWT), untuk menjamin sambungan. Adalah penting untuk memahami CORS secara menyeluruh dan memastikan pengendalian permintaan OPTIONS yang betul untuk mengelakkan pelanggaran keselamatan.
Atas ialah kandungan terperinci Mengapa Permintaan AngularJS POST Saya Gagal dengan 404 untuk Permintaan Preflight?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!