Angular VSCode调试控制台上出现“访问控制允许源代码”错误,但Chrome DevTools网络选项卡上出现200OK代码

Angular VSCode调试控制台上出现“访问控制允许源代码”错误,但Chrome DevTools网络选项卡上出现200OK代码,angular,angular-httpclient,Angular,Angular Httpclient,在Angular 7项目中,使用HttpClient,我在单击按钮处理程序上有一行简单的代码: 这是http .得到http://localhost:30123/api/identity/name/“+this.name .subscribeanswer:Identity[]=>{ this.identies=answer;//调试未到达此处。。。 }; 在VSCode的Console Debug选项卡上抛出此错误: Access to XMLHttpRequest at 'https://di

在Angular 7项目中,使用HttpClient,我在单击按钮处理程序上有一行简单的代码:

这是http .得到http://localhost:30123/api/identity/name/“+this.name .subscribeanswer:Identity[]=>{ this.identies=answer;//调试未到达此处。。。 }; 在VSCode的Console Debug选项卡上抛出此错误:

Access to XMLHttpRequest at 'https://dihgldata.ingeniusds.cat/api/identitat/nom/montilla' from origin 'http://localhost:4200' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
[http://localhost:4200/] core.js:15724 {headers: HttpHeaders, status: 0, statusText: "Unknown Error", url: "https://dihgldata.ingeniusds.cat/api/identitat/nom…", ok: false, …}
但是

我使用三种不同的工具来测试相同的URL,并从api获得正确的响应

第一:邮递员

嗯,你知道:标题,内容类型,。。。发送时会有所不同 从这个实用程序而不是从chrome

第二:VS代码扩展Rest客户端

按照Postman的说法,这些实用程序对测试API很有用,但对客户端代码的错误没有帮助

第三:Chrome开发工具

这是我的大事。我进入了ChromeDevTools上的网络选项卡,在我的代码处理之前,我可以看到API的响应,并且有一个OK-200状态的完整响应

Chrome DevTools上的Console选项卡没有错误

使用带有Chrome扩展跟踪的VS代码集成调试器永远不会到达答案分配给局部变量的行,并且错误显示在VSCode调试控制台中,没有其他线索

编辑

在Chrome地址栏上尝试了与Angular HttpClient相同的URL,并且正确显示了来自相同API的响应。

当您从任何其他URL请求时,它将被Cross Origin资源共享策略阻止

您必须允许来自任何url或仅来自的COR


在Java中,可以使用CORS过滤器

嗨,Murrium,这就是我的想法,但这对我来说非常奇怪,因为我可以从Chrome的地址栏发送一个POST请求,我得到了正确的答案。但是,当从Angular代码发出请求时,就会触发错误。更重要的是,在ChromeDevTools的网络选项卡上,我可以看到API在进入Angular之前发送的数据,Angular模块不处理这些数据。当你使用Chrome的地址栏时,你会请求localhost。例如,您在谷歌上有一个帐户,现在您可以使用该帐户发布数据。现在你试图从雅虎发帖,但谷歌的CORS政治拒绝了来自另一个域的发帖请求。如果你试图从邮递员向谷歌发送邮件请求,你也会通过你的域名(又名ip)被阻止。所以,当您向localhost发出请求时,您拥有相同的域,并且托管所有端口,这就是为什么CORS不会阻止它。Angular localhost只能访问4200端口,您的api只能访问30123端口,这就是为什么它是CORS。所以您是说CORS它在客户端级别阻塞。即使在API处理请求时,Angular也会阻止数据?不,它会被API阻止,因为Angular url是不允许的。这是我从CORS中了解到的,但在Chrome DevTools网络选项卡上,我可以看到API发送的数据,在它进入Angular之前,当我从我的应用程序启动请求时!!