ASP.NET CORS 阻止字体请求

Posted

技术标签:

【中文标题】ASP.NET CORS 阻止字体请求【英文标题】:ASP.NET CORS blocking font request 【发布时间】:2015-12-07 18:53:03 【问题描述】:

我构建了一个 ASP.NET Web API 服务并在该服务中启用了 CORS。此服务用于提供报告模板资源(html, image, css, font)。 Web客户端加载模板并根据下载的模板显示报告。

所以,给定服务点:http://templates.domain.com, 我尝试从 Web 应用程序 (http://client.domain.com) 访问服务 (REST, Image, Font),然后将加载 Web 客户端应用程序:

http://templates.domain.com/templates/:templateName http://templates.domain.com/templates/:templateName/css/style.css http://templates.domain.com/templates/:templateName/image/header.jpg http://templates.domain.com/templates/:templateName/font/test.ttf

在上面,服务中的 REST API、CSS 和图像运行良好,但字体被阻止/失败。

来自“http://localhost:49350”的字体已被阻止 通过跨域资源共享策略加载:否 请求中存在“Access-Control-Allow-Origin”标头 资源。原点“空”

到目前为止,我已经尝试了以下解决方案,但字体仍然被阻止。

    Microsoft.Owin.Cors

    app.UseCors(CorsOptions.AllowAll);

    Microsoft.AspNet.WebApi.Cors

    var cors = new EnableCorsAttribute("*", "*", "*"); config.EnableCors(cors);

【问题讨论】:

你的前端 web.config 文件中定义了字体扩展名吗?如果我没有定义它们,我会得到 404(不是 CORS 错误),所以也许这不是问题。例如 @S. Baggy 没有 404,只是 CORS 错误 您能发布请求/响应标头吗? 【参考方案1】:

您使用的是 OWIN 还是 WebAPI?

对于 AspNet WebAPI,以下将允许一切通过:

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

重要的是要指出,允许“*”是潜在的安全漏洞,因为您说任何人都可以调用这些方法。

【讨论】:

以上是关于ASP.NET CORS 阻止字体请求的主要内容,如果未能解决你的问题,请参考以下文章

Firefox 阻止对 ASP.NET 身份更改/模拟的简单 CORS 请求

来自 ASP NET Web API 的 CORS 阻止 Ajax POST 调用 - 对预检请求的响应未通过访问控制检查

在asp.net核心信号R中阻止交叉原始请求?

从 Azure CDN 请求的字体文件被 CORS 策略阻止

带有 Vue JS 的 ASP.NET Core 5 从源访问 XMLHttpRequest 已被 CORS 策略阻止

azure 应用服务和 asp.net 核心:CORS 策略甚至 AllowAnyOrigin 也阻止了来源