【问题标题】:Angular 7: Sending post request gives error 405 (Method not allowed)Angular 7:发送 post 请求给出错误 405(不允许的方法)
【发布时间】:2020-01-15 01:15:10
【问题描述】:

我在 Chrome 上有 CORS 扩展,GET 请求工作正常,但 POST 请求没有。我收到错误“方法不允许”,但由于我有 CORS 扩展,根据文档,POST 请求应该可以工作。

我尝试使用另一个主题中提到的可选标题,但错误仍然存​​在。

我使用这个代码:

send(id){
    let list = JSON.stringify(this.array)
    this.http.post(this.url + this.id, list)
         .subscribe(),
            error => console.log("Error: ", error)
    )
} 

浏览器控制台中的错误信息是:

消息:http://localhost:4000/ 的 Http 失败响应...
名称:“HttpErrorResponse”
好的:假
状态:405
statusText: "方法不允许"

【问题讨论】:

  • 如果您在浏览器之外尝试使用curl 或类似名称,请求是否有效?
  • 我刚用邮递员试了一下。我查一下 curl 是什么,谢谢
  • 它是否适用于Postman?如果是这样,您不需要尝试使用curl,结果应该是相同的。请将浏览器控制台中的excat异常文本添加到您的问题中。
  • 如果它不适用于Postman,它与CORS 无关,因为thouse 是一个浏览器,被Postman 忽略。

标签: angular http post http-status-code-405


【解决方案1】:

这可能与CORS无关。

405 方法不允许

通常用于指示服务器(对于目标资源)不接受 HTTP 方法(在您的情况下为POST)。看看 405 的响应头 - 它应该包含类似这样的内容

Allow: GET, POST, HEAD

ab 有点可疑的是,您将令牌附加到请求 URL(假设 this.currentUservalueToken 用于身份验证)。 “通常”您会为此使用 Authorization HTTP 标头

尝试像这样添加Authorization 标头:

send(ordernummer){
    let arr = JSON.stringify(this.localeArray)

    var headers = new Headers();
    headers.append('Authorization', 'Bearer AADDFFKKKLLLL');

    this.http.post(this.url+ ordernummer + "/" + this.id, arr, {
        headers: headers
      }).subscribe(data => console.log("Successful"),
            error => console.log("Error: ", error)
    )
}

【讨论】:

  • 你是对的,我查看了响应头,没有包含“允许:GET、POST、HEAD”的字段
  • 或者更好的是使用HttpInterceptor 在所有请求上附加授权承载令牌
  • 尝试Postman 中的请求,无需在 URL 中附加 currentUservalueToken。如果尝试使用 Postmans“Auth”选项卡中的令牌,这应该会给你一个 401(未经授权)
猜你喜欢
  • 2021-09-21
  • 2013-10-10
  • 2017-11-03
  • 2012-01-04
  • 1970-01-01
  • 2013-11-26
  • 2018-02-28
  • 1970-01-01
  • 2019-07-05
相关资源
最近更新 更多