我们有一个Angular应用程序,它调用.net核心restful api项目。还有一个单独的auth应用程序(Identity Server4)来处理登录。
这只发生在Safari上,所有其他浏览器都可以正常工作。
Safari中的确切错误是
if
但是在我的回复中,我发送了以下Cors标题
Origin https://my.site.com is not allowed by Access-Control-Allow-Origin.
除了CORS错误调用API之外,我在Safari中没有回复,所以我认为它绝对是浏览器相关的问题。我不得不从Chrome中抓取标题以查看返回的内容。
Safari中的OPTIONS调用有效,我可以在Safari中看到响应中的正确标题。
我也试过Access-Control-Allow-Origin: https://my.site.com
Access-Control-Allow-Credentials: true
,Safari也失败了。
我认为这可能是Safari中的第三方Cookie设置,因为我们的登录服务器位于不同的子域上,该子域设置了auth cookie但不确定如何检查这是否真的是问题。我们的apis也在另一个子域上,并且它对api的调用不适用于角度应用程序。
我不知道下一步该尝试什么。
答案 0 :(得分:0)
所以问题毕竟不是CORs问题。因为api返回了一个内部服务器错误(500),CORs标头没有被添加到响应中,而是告诉我原因是内部服务器错误像其他浏览器一样,Safari忘了提到那部分并且只显示一个CORs错误(我测试的功能是特定于Safari和iPhone的,如果你想知道为什么它没有在其他浏览器测试中被选中)。
答案 1 :(得分:0)
Safari在模块脚本上需要crossorigin属性,因此解决方案是在angular.json文件中使用“ crossOrigin”选项:
"architect": {
"build": {
"builder": "@angular-devkit/build-angular:browser",
"options": {
"crossOrigin": "anonymous", // <-- The place where you should add/set the option
//... other options