AngularJS POST 請求失敗:預檢請求的HTTP 404
在AngularJS 中,POST 請求期間可能會出現未解決的「RealXML無法載入”錯誤。這是由於實際 POST 之前的預檢請求的 HTTP 狀態碼 (404) 無效所致。預檢請求旨在檢查請求的操作是否被允許,確保遵守跨來源資源共享 (CORS) 政策。
根本原因:缺少 CORS 標頭
錯誤的根本原因在於伺服器未能正確處理預檢 OPTIONS 請求。若要啟用跨來源請求,伺服器必須設定適當的 CORS 標頭。
解決方案:在伺服器端新增CORS 標頭
在SlimPHP 中,您可以將CORS 標頭新增至回應物件:
<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>
解決方案:停用客戶端預檢請求
或者,您可以透過重設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>
其他注意事項
對於涉及敏感資料的POST 要求,您可能需要實作身分驗證和授權機制,例如JSON Web Tokens (JWT)、以確保連線安全。徹底了解 CORS 並確保正確處理 OPTIONS 請求以防止安全漏洞至關重要。
以上是為什麼我的 AngularJS POST 請求失敗並出現預檢請求 404?的詳細內容。更多資訊請關注PHP中文網其他相關文章!