当CORS已经允许所有时,我为什么会收到CORS错误?

时间:2016-04-01 15:21:27

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

我们一直在开发人员工作站上遇到此错误:

  

来自原点的字体' http://localhost:65314'已被封锁   通过跨源资源共享策略加载:否   '访问控制允许来源'标题出现在请求的上   资源。起源' 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调试控制台中删除此错误。

1 个答案:

答案 0 :(得分:0)

将以下代码添加到WebApiConfig.cs的Register方法:

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>