首页  >  文章  >  后端开发  >  为什么我在 AngularJS 应用程序中收到“预检请求失败并出现错误:无效的 HTTP 状态代码 404”?

为什么我在 AngularJS 应用程序中收到“预检请求失败并出现错误:无效的 HTTP 状态代码 404”?

Linda Hamilton
Linda Hamilton原创
2024-11-03 15:00:04631浏览

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