我有一个rest api,可以使用post和get请求。但是,当我要使用放置和删除请求时,它会返回错误403。而且,当我尝试使用Postman应用程序(用于JSON请求的应用程序)放置和删除时,一切都很好。我真的很困惑。让我用一些屏幕截图来证明问题。 (出于安全原因,我已审查了这些链接,对此表示抱歉)
任何我的输入代码;
/** PUT: update the firm on the server */
updateFirm (firm: Firm): Observable<any> {
console.log(firm);
return this.http.put(this.firmUrl+"put/"+String(firm.id), firm, httpOptions).pipe(
tap(_ => console.log(`updated firm id=${firm.id}`)),
catchError(this.handleError<any>('updateFirm'))
);
}
如果您能帮助我,我将不胜感激。祝你有美好的一天
答案 0 :(得分:2)
我遇到了类似的情况,发现Angular 2在POST完成之前执行了OPTIONS方法! “访问控制允许方法”中缺少选项。
如果我检查您的日志,那么我认为您还应该允许OPTIONS: 以angular和perl作为后端,我不得不允许以下操作:
-“ Access-Control-Allow-Methods” =>'GET,POST,PATCH,DELETE,PUT,OPTIONS',
答案 1 :(得分:1)
这似乎是一个CORS错误,您正在执行从本地主机上的本地计算机到其他URL后端的http请求。解决此问题的唯一方法是在后端允许来自不同来源的请求。或者可以在本地计算机上运行后端。
答案 2 :(得分:1)
您的问题是有关 HTTP OPTIONS 请求的 CORS 。
实际上,在执行HTTP PUT
请求之前,您的客户端必须发出一个OPTIONS
请求,以便添加包含您的标头的httpOptions
变量。
因此,您必须在服务器的代码中授权执行OPTIONS请求。