Firefox和IE中的CORS问题(在Chrome中运行正常)

时间:2015-03-07 16:02:29

标签: javascript angularjs internet-explorer firefox asp.net-web-api

我在Firefox和IE中遇到了与CORS相关的错误,但一切都在Chrome中完美运行。

来自我的客户的两个电话是

  1. 在Chrome和Firefox中使用Facebook的一般电话,但在IE 11中失败。我正在拨打https://graph.facebook.com/oauth/access_token_info?client_id=myclientid&access_token=usersaccesstoken来验证他们的令牌是否仍然有效。在IE中,我收到以下错误:XMLHttpRequest用于所需的跨源资源共享(CORS)。
  2. 第二个电话是我的服务器,它在任何地方都启用了CORS(代码粘贴在下面)。有趣的是,这一切都在localhost上,所以应该是同一台服务器。我收到的错误是“同源策略禁止在https://localhost:44300/api/auth/login读取远程资源。这可以通过将资源移动到同一域或启用CORS来解决。”
  3. CORS相关的Web API代码

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

    更新1

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

    更新2

    部署时一致工作(即使是不同域上的客户端和服务器)并且在localhost上失败。我无法缩小为什么它在本地失败。清除缓存和删除的本地文件,问题仍然存在。完全打开我的服务器到CORS,问题仍然存在。我唯一可以猜到的是Azure如何处理跨Azure请求,从而绕过部署时的CORS问题。我真的需要让它在本地工作,但要进行测试。

1 个答案:

答案 0 :(得分:0)

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

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

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

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

4)请检查您的web.config文件以获取以下条目。如果他们在那里然后请删除/评论他们。

    <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(起源:“”,标题:“”,方法:“*”)]以允许所有类型的来源,标题和方法被控制者接受。