【问题标题】:CORS issue in Firefox and IE (works fine in Chrome)Firefox 和 IE 中的 CORS 问题(在 Chrome 中运行良好)
【发布时间】:2015-03-10 18:52:12
【问题描述】:

我在 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 for required Cross Origin Resource Sharing (CORS)。
  2. 第二个调用是我的服务器,它在所有地方都启用了 CORS(代码粘贴在下面)。有趣的是这一切都在本地主机上,所以应该是同一台服务器。我收到的错误是“同源策略不允许读取位于https://localhost:44300/api/auth/login 的远程资源。这可以通过将资源移动到同一个域或启用 CORS 来解决。”

CORS 相关的 Web API 代码

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

更新 1

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

更新 2

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

【问题讨论】:

  • 您是在本地向http 提出请求吗?
  • @charlietfl https 到 localhost 上的 https,客户端和服务器在不同的端口上

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


【解决方案1】:

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

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(origins: "", headers: "", methods: "*")] 以允许所有类型的源、标头和方法被控制器接受。

【讨论】:

    猜你喜欢
    • 2013-04-23
    • 1970-01-01
    • 1970-01-01
    • 2013-09-27
    • 2018-09-25
    • 2014-12-25
    • 1970-01-01
    • 2019-02-10
    相关资源
    最近更新 更多