首页  >  文章  >  后端开发  >  为什么我的 AngularJS POST 请求失败并出现预检请求 404?

为什么我的 AngularJS POST 请求失败并出现预检请求 404?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-03 14:56:30256浏览

Why Does My AngularJS POST Request Fail with a 404 for the Preflight Request?

AngularJS POST 请求失败:预检请求的 HTTP 404

在 AngularJS 中,POST 请求期间可能会出现未解决的“XMLHttpRequest 无法加载”错误。这是由于实际 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn