【问题标题】:Authentication Error: Response for preflight has invalid HTTP status code 405身份验证错误:预检响应具有无效的 HTTP 状态代码 405
【发布时间】:2016-02-13 20:53:29
【问题描述】:

我想实现身份验证。实际上,我的项目是在 Angular 2 Beta 中构建的,但我使用this 身份验证示例进行测试。我有自己的 API,只是将它的 url 添加到这个示例项目中。它不起作用)它显示了这个错误:

Failed to load resource: the server responded with a status of 405 (Method Not Allowed)
Fetch API cannot load http://blah-blah-blah. Response for preflight has invalid HTTP status code 405

这里是登录方法:

login(event, phone, password) {
event.preventDefault();
window.fetch('http://blah-blah-blah', {
  method: 'POST',
  headers: {
    'Accept': 'application/json',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    phone, password
  })
})
.then(status)
.then(json)
.then((response:any) => {
  localStorage.setItem('access_token', response.id_token);
  this.router.parent.navigateByUrl('/home');
})
.catch((error) => {
  alert(error.message);
  console.log(error.message);
});
}

【问题讨论】:

    标签: angular


    【解决方案1】:

    您似乎正在尝试进行跨域 AJAX 调用。为此,您的远程服务器 API 必须支持 CORS。飞行前请求是浏览器在发出实际 POST 请求之前使用 OPTIONS 动词发送的特殊请求:

    OPTIONS http://blah-blah-blah
    

    服务器必须以正常的 200 状态代码进行响应,并包含正确的 CORS 标头,指示允许哪些域向它发出请求。只有在那之后才会发送实际的 POST 请求。

    您的 API 的问题是端点向此 OPTIONS 请求返回了 405 Not Allowed 状态代码。因此,您需要修复您的 API,使其支持 OPTIONS 动词。

    【讨论】:

    • 我认为你错过了我回答的重点。问题不在您的 Angular 应用程序中。它位于您尝试调用的服务器端 API 上。这就是你应该解决问题并启用 CORS 的地方,所以基本上你应该为 http://api.paydacard.kz/identity/login 端点启用 CORS。在您的问题中,您提到这是您自己的 API,因此更新它应该不是问题。
    • 我知道了)但是我无法配置 API,我无权访问它。
    • 哦,那你有问题了。如果您无法更改此 API 的代码,则需要设置另一个 API,该 API 与您的 Angular 应用程序托管在同一域上,并将充当您的域和远程域之间的桥梁。所以基本上你会从你的 Angular 应用程序发送 AJAX 请求到这个本地 API,比如/myapi,它会通过向远程 API 发出服务器端请求来处理委托调用。
    • 您显示的代码是 Angular 和 javascript。无论您在客户端上做什么,您都无法绕过浏览器内置的相同来源策略限制,该限制禁止您进行跨域 AJAX 调用。我真的建议您阅读一些关于 CORS 的内容,以便更好地了解它的工作原理以及如何在服务器上启用它。
    • 这是一篇很好的概述文章:html5rocks.com/en/tutorials/cors
    猜你喜欢
    • 2016-10-10
    • 2018-05-02
    • 1970-01-01
    • 2018-03-08
    • 2016-10-28
    • 2016-09-19
    • 1970-01-01
    • 2018-02-19
    • 1970-01-01
    相关资源
    最近更新 更多