c# - 在 ASP.NET 中,如何只为 TTF 文件添加 CORS header ?

标签 c# asp.net font-face cors

我有一个带有显示外部页面的 iframe 的页面。外部页面配置为从我的服务器下载 CSS 文件。

在 CSS 中,我添加了一个 @font-face 选择器:

@font-face {
    font-family: "Special Font";
    src: url("<%= Request.Url.GetLeftPart(UriPartial.Authority) + "/fonts/specialfont.ttf" %>");
}

这会在 Chrome 中下载并显示字体,但在 Firefox 中,它会下载字体,但拒绝使用它。做一点研究表明这个问题是一个跨源策略问题。这里提到的解决方案之一:

http://enable-cors.org/

是启用CORS header。但是,它提供的解决方案是站点范围的:

<?xml version="1.0" encoding="utf-8"?>
    <configuration>
        <system.webServer>
            <httpProtocol>
                <customHeaders>
                    <add name="Access-Control-Allow-Origin" value="*" />
                </customHeaders>
            </httpProtocol>
        </system.webServer>
</configuration>

而我只想为 .TTF 文件启用它。有没有办法通过使用 HttpHandler 或其他方法来做到这一点?

最佳答案

您可以使用 location element 实现类似的效果在 web.config 中将配置规则限制为特定目录或文件。例如:

<configuration>
  <location path="fonts/specialfont.ttf">
    <system.webServer>
       <httpProtocol>
          <customHeaders>
             <add name="Access-Control-Allow-Origin" value="*" />
          </customHeaders>
       </httpProtocol>
    </system.webServer>
  </location>
</configuration>

尽管您可能希望为所有字体启用 CORS,例如<location path="fonts"> .

this question 的答案还有几个 location 的例子.

关于c# - 在 ASP.NET 中,如何只为 TTF 文件添加 CORS header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11625440/

相关文章:

html - cmd.exe 的 CSS 字体系列

c# - 将 foreach 循环中发生的条件作为参数传递

c# - 为什么我们需要静态构造函数?

c# - C# 中的 GET_WHEEL_DELTA_WPARAM 宏

c# - 有多少网络服务

c# - 在 C# 中使用来自服务器资源管理器的数据连接

c# - 如何在我的 .Net Web 应用程序中使用/调用 ttf2eot(用于将 TTF 字体格式转换为 EOT 类型的应用程序)

css - 在 CSS 中将 font-face 放在哪里?

c# - EF 代码优先的 RelationShip 错误

c# - 为什么即使我将 Expires 设置为 null,JWT 也会包含 EXP 声明?