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 错误),所以也许这不是问题。例如您使用的是 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 调用 - 对预检请求的响应未通过访问控制检查
从 Azure CDN 请求的字体文件被 CORS 策略阻止