Firefox 和 IE 中的 CORS 问题(在 Chrome 中工作正常)

CORS issue in Firefox and IE (works fine in Chrome)

我在 Firefox 和 IE 中遇到了与 CORS 相关的错误,但在 Chrome 中一切正常。

我的客户的两个电话是

  1. 对 Facebook 的一般调用在 Chrome 和 Firefox 中有效,但在 IE 11 中失败。我正在调用 https://graph.facebook.com/oauth/access_token_info?client_id=myclientid&access_token=usersaccesstoken 以验证他们的令牌是否仍然有效。在 IE 中,我收到以下错误:XMLHttpRequest for required Cross Origin Resource Sharing (CORS)。
  2. 第二个调用是对我的服务器的调用,它在所有地方都启用了 CORS(代码粘贴在下面)。有趣的是,这一切都在本地主机上,所以应该是同一台服务器。我收到的错误是 "The Same Origin Policy disallows reading the remote resource at https://localhost:44300/api/auth/login. This can be fixed by moving the resource to the same domain or enabling CORS."

CORS 相关 Web API 代码

        var cors = new EnableCorsAttribute("*","*","*");
        config.EnableCors(cors);
        app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);

更新 1

好吧,它在部署到 Azure 时有效,但在本地主机上无效。这两个问题在部署时都得到了完全解决。非常奇怪,非常糟糕,因为我需要能够在本地测试这些东西。但至少它有点工作......可能会添加一些线索来解决。

更新 2

部署时始终如一地工作(即使是那些位于不同域的客户端和服务器)并且在本地主机上失败。我无法缩小它在本地失败的原因。清除了缓存并删除了本地文件,问题仍然存在。完全向 CORS 打开我的服务器,问题仍然存在。我唯一能猜到的是 Azure 如何处理跨 Azure 请求,从而在部署时绕过 CORS 问题。我真的需要让它在本地运行以进行测试。

试试这个。不确定,但可能会解决问题。

1) 在您的 Web api 项目中打开 nuget 包管理器控制台。

2) 输入 Install-Package Microsoft.AspNet.WebApi.Cors 并安装它

3) 安装成功后键入 Update-Package Microsoft.AspNet.WebApi 并安装它。

4) 请检查您的 web.config 文件中的以下条目。如果他们在那里,请 remove/comment 他们。

    <add name="Access-Control-Allow-Origin" value="*" />
    <add name="Access-Control-Allow-Headers" value="*" />
    <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />

5) 现在来到您的控制器文件并导入命名空间。使用 System.Web.Http.Cors;

6) 现在在控制器级别键入 [EnableCors(origins: "", headers: "", methods: "*")] 以允许所有来源类型,headers 和控制器接受的方法。