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错误