预检请求失败并出现错误:无效的 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中文网其他相关文章!