首頁 >後端開發 >php教程 >為什麼我在 AngularJS 應用程式中收到「預檢請求失敗並出現錯誤:無效的 HTTP 狀態碼 404」?

為什麼我在 AngularJS 應用程式中收到「預檢請求失敗並出現錯誤:無效的 HTTP 狀態碼 404」?

Linda Hamilton
Linda Hamilton原創
2024-11-03 15:00:04666瀏覽

Why Am I Getting a

預檢請求失敗並出現錯誤:無效的HTTP 狀態代碼404

在AngularJS 應用程式中,嘗試執行POST 請求有時會導致以下錯誤訊息:「預檢回應具有無效的HTTP 狀態代碼404。」出現此錯誤的原因是跨來源資源共享(CORS) 策略的問題。

大多數現代瀏覽器實作的 CORS 策略可確保 Web 應用程式可以安全地向其他網域發出請求。在發出實際請求之前,瀏覽器會向伺服器發送預檢請求 (OPTIONS),以檢查伺服器是否允許來自原始網域的請求。

要解決此問題,請確保伺服器回應預檢帶有適當標頭的請求。具體來說,伺服器應設定以下標頭:

  • Access-Control-Allow-Headers
  • Content-Type
  • Access-Control-Allow-Methods
  • Access-Control-Allow-Origin

例如,在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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn