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

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

Linda Hamilton
发布: 2024-11-03 15:00:04
原创
692 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板