Angular 7:发送 post 请求给出错误 405(不允许的方法)

Posted

技术标签:

【中文标题】Angular 7:发送 post 请求给出错误 405(不允许的方法)【英文标题】:Angular 7: Sending post request gives error 405 (Method not allowed) 【发布时间】: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 忽略。 【参考方案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(未经授权)

以上是关于Angular 7:发送 post 请求给出错误 405(不允许的方法)的主要内容,如果未能解决你的问题,请参考以下文章

从 Angular 向 Asp.net 发送 post 请求时出现错误 405

Spring / Angular 7 POST方法请求参数为空

无法反序列化从 Springboot POST 映射函数上的 Angular http post 请求发送的 POJO

在Angular 4中将数据发送到JAVA post REST API时出现CORS错误

在 Spring Boot 中从 Angular 向后端发送 post 请求中的对象的问题

从Angular2应用程序发送http post请求时如何启用CORS