【问题标题】:Why do I get CORS error when CORS is already allowing all?当 CORS 已经允许全部时,为什么我会收到 CORS 错误?
【发布时间】:2016-07-21 11:30:22
【问题描述】:

我们的开发人员工作站上一直出现此错误:

来自“http://localhost:65314”的字体已被阻止 通过跨域资源共享策略加载:否 请求中存在“Access-Control-Allow-Origin”标头 资源。因此不允许使用原点“http://localhost:61450” 访问。

我们有三个 IIS Express 站点同时运行,所有站点都设置了

app.UseCors(CorsOptions.AllowAll);

我已尝试浏览所有控制器类并添加:

[EnableCors("*", "*", "*")]

在添加此内容之前,我在响应标头中没有看到任何效果:

<system.webServer>
    <httpProtocol>
        <customHeaders>
            <add name="Access-Control-Allow-Origin" value="*" />
        </customHeaders>
    </httpProtocol>
</system.webServer>

现在响应头显示:

Access-Control-Allow-Origin:*

我也尝试添加这个,因为字体是静态内容:

    <modules runAllManagedModulesForAllRequests="true">

但错误仍然存​​在。使用 IIS Express 8。

无论如何,字体还是会以某种方式被加载——网络选项卡显示,在获取引用的 woff2 文件的某个时间点,200 成功。

我想从 Chrome 调试控制台中消除此错误。

【问题讨论】:

    标签: asp.net asp.net-mvc iis asp.net-mvc-5 iis-express


    【解决方案1】:

    将以下代码添加到 WebApiConfig.cs 的注册方法中:

    var corsAttr = new EnableCorsAttribute("http://localhost:65314,http://localhost:61450", "*", "*");
    config.EnableCors(corsAttr);
    

    如果错误仍然存​​在,请尝试从 web.config 中删除以下设置

    <httpProtocol>
        <customHeaders>
            <add name="Access-Control-Allow-Origin" value="*" />
        </customHeaders>
    </httpProtocol>
    

    【讨论】:

    • 我们没有在这种情况下使用 Web API。 (我们在其他地方使用它,但不在请求字体的站点上,而不是在提供字体的站点上。)此外,我们使用的是 OWIN / IAppBuilder 而不是 GlobalConfiguration.Configuration。
    猜你喜欢
    • 2021-07-16
    • 2020-03-07
    • 2020-12-15
    • 2021-07-17
    • 2022-01-09
    • 2021-02-15
    • 1970-01-01
    • 1970-01-01
    • 2022-06-10
    相关资源
    最近更新 更多