我可能有CORS政策问题。我的应用是使用以下技术编写的:
- 前端:Angular 8,打字稿
- 后端 :. asmx Web服务中的ASP.NET
当我开始在Ang2中创建应用程序时,一切都很好。几年后,我改用Ang8(平均时间完全没有开发),我开始遇到与CORS相关的问题。在生产中,一切都很好,因为两者都托管在同一端口和同一服务器上。在本地开发机上,我遇到了问题,但无法解决。由于开发原因,我关闭了CORS安全性,
chrome.exe --disable-web-security --user-data-dir={dir}
从那时起,我一直可以发展。现在chrome已更新为v。78,这让我有点麻烦...我在dev和prd上对API的所有调用开始返回与CORS相关的错误,因此我进行了搜索并发现了这一点:
https://support.google.com/chrome/thread/11089651?hl=en
解决方案在生产环境下可以正常工作,在该环境下,相同的服务器和端口是优势,但在开发机上则不起作用。应用程序从localhost:4200运行,而api从localhost:58082运行。因此,即使响应实际上是这样,我仍然认为这仍然是CORS问题:
"Http failure response for {URL}: 403 Forbidden"
我仍然需要解决此问题,因为我不想告诉所有用户:“转到Chrome的设置页面并禁用某些内容”(实际上我并不确切知道会有什么后果。 ..)
也许某些代码也将有所帮助。这是我的选项,其中标题是从Ang8应用发送到API的:
const options = { headers: new HttpHeaders({
'access-control-allow-origin': '*','Content-Type': 'application/json','access-Control-Allow-Methods': 'GET,POST,OPTIONS','access-Control-Allow-Headers': 'Origin,Content-Type,X-Auth-Token'
}),params: new HttpParams().set('Param',param.toString())
};
return this.http.get<Response>(this.Url,options)
这是有关这些标头的asmx服务的web.config摘录:
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="access-control-allow-origin" value="*" />
</customHeaders>
</httpProtocol>
...
</system.webServer>
任何帮助都会真的很有价值,因为我被困住了,无法继续开发。而且在有人问之前,是的,这些服务正在运行并且可以访问:)
谢谢。