預檢請求失敗並出現錯誤:無效的HTTP 狀態代碼404
在AngularJS 應用程式中,嘗試執行POST 請求有時會導致以下錯誤訊息:「預檢回應具有無效的HTTP 狀態代碼404。」出現此錯誤的原因是跨來源資源共享(CORS) 策略的問題。
大多數現代瀏覽器實作的 CORS 策略可確保 Web 應用程式可以安全地向其他網域發出請求。在發出實際請求之前,瀏覽器會向伺服器發送預檢請求 (OPTIONS),以檢查伺服器是否允許來自原始網域的請求。
要解決此問題,請確保伺服器回應預檢帶有適當標頭的請求。具體來說,伺服器應設定以下標頭:
例如,在SlimPHP 中,您可以使用response().headers() 方法設定這些標頭:
<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>
透過設定伺服器來處理預檢請求並在AngularJS 中停用自動預檢處理,您可以成功地從您的AngularJS 用戶端到您的伺服器。
以上是為什麼我在 AngularJS 應用程式中收到「預檢請求失敗並出現錯誤:無效的 HTTP 狀態碼 404」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!