ASP.NET CORS 阻止字体请求

标签 asp.net asp.net-web-api cors

我构建了一个 ASP.NET Web API 服务并在该服务中启用了 CORS。此服务用于提供报告模板资源(html、图像、css、字体)。 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 和图像运行良好,但字体被阻止/失败。

Font from origin 'http://localhost:49350' has been blocked from loading by Cross-Origin Resource Sharing policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null'

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

  1. Microsoft.Owin.Cors:

    app.UseCors(CorsOptions.AllowAll);

  2. Microsoft.AspNet.WebApi.Cors:

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

最佳答案

您使用的是 OWIN 还是 WebAPI?

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

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

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

关于ASP.NET CORS 阻止字体请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32519603/

相关文章:

c# - asp.net 如何禁止浏览器保存 TextBox 以前的数据

c# - 如何逐个单元格地加载表格

asp.net - 使 PXButton 显示为铅笔图标

wcf - 只能用WCF实现而不能用Web API实现的场景

c# - 未捕获 WEB API httpException

c# - 从 URL 编码字符串获取域

asp.net-web-api - 使用 WebApi 2 和 Entity Framework (代码优先)在 OData 中是否有自动 ETag 处理?

php - 因此不允许本地主机访问

asp.net-core - Chrome从http调用https时抛出CORS错误,并且ASP Core不发送CORS header

javascript - 在线查找 CORS 友好的图像