仅在Safari上出现CORS access-control-allow-origin错误

时间:2018-03-09 01:00:16

标签: angular asp.net-core safari cors

我们有一个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的调用不适用于角度应用程序。

我不知道下一步该尝试什么。

2 个答案:

答案 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