为什么@ font-face在woff文件上抛出404错误?

dcp*_*450 418 css font-face woff http-status-code-404

@font-face在我公司的网站上使用,它的工作/看起来很棒.除了Firefox和Chrome将在该.woff文件上引发404错误.IE不会抛出错误.我有字体位于根,但我已经尝试使用css文件夹中的字体,甚至给出了字体的整个网址.如果从我的css文件中删除这些字体,我没有得到404,所以我知道这不是语法错误.

另外,我使用fontsquirrels工具来创建@font-face字体和代码:

@font-face {
  font-family: 'LaurenCBrownRegular';
  src: url('/laurencb-webfont.eot');
  src: local('?'), 
    url('/laurencb-webfont.woff') format('woff'), 
    url('/laurencb-webfont.ttf') format('truetype'), 
    url('/laurencb-webfont.svg#webfontaaFhOfws') format('svg');
  font-weight: normal;
  font-style: normal;
}

@font-face {
  font-family: 'FontinSansRegular';
  src: url('/fontin_sans_r_45b-webfont.eot');
  src: local('?'), 
    url('/fontin_sans_r_45b-webfont.woff') format('woff'), 
    url('/fontin_sans_r_45b-webfont.ttf') format('truetype'), 
    url('/fontin_sans_r_45b-webfont.svg#webfontKJHTwWCi') format('svg');
  font-weight: normal;
  font-style: normal;
}
Run Code Online (Sandbox Code Playgroud)

Ian*_*son 716

我遇到了同样的症状 - 在Chrome中的woff文件上有404 - 并且正在使用IIS 6在Windows Server上运行应用程序.

如果您处于相同的情况,可以通过执行以下操作来修复它:

解决方案1

"只需通过IIS管理器(网站属性的HTTP标头选项卡)添加以下MIME类型声明:.woff application/x-woff "

更新:根据woff字体的MIME类型Grsmto,实际的MIME类型是application/x-font-woff(至少对于Chrome).x-woff将修复Chrome 404s,x-font-woff将修复Chrome警告.

截至2017年:Woff字体现已标准化为RFC8081规范的一部分,适用于mime类型font/wofffont/woff2.

IIS 6 MIME类型

感谢Seb Duggan:http://sebduggan.com/posts/serving-web-fonts-from-iis

解决方案2

您还可以在Web配置中添加MIME类型:

  <system.webServer>
    <staticContent>
      <remove fileExtension=".woff" /> <!-- In case IIS already has this mime type -->
      <mimeMap fileExtension=".woff" mimeType="font/woff" />
    </staticContent>    
  </system.webServer>
Run Code Online (Sandbox Code Playgroud)

  • MIME类型已标准化为[`application/font-woff`](http://www.w3.org/TR/WOFF/#appendix-b). (11认同)
  • 请注意,由于与applicationhost.config文件冲突,您可能会收到错误"无法添加具有唯一键属性"fileExtension"..."的"mimeMap"类型的重复集合条目.您可以通过在web.config文件中指定新的mimeMap之前添加`<remove fileExtension =".woff"/>`来解决此问题,以删除错误的副本. (5认同)
  • 这样做了!如果你有相同的问题,但使用.woff2文件只需添加另一个MIME类型(或配置)与该扩展名 (5认同)
  • 这个解决方案对我不起作用.对我来说诀窍是:https://hotcakescommerce.zendesk.com/hc/en-us/articles/210926903-HTTP-404-Not-Found-Error-with-woff-or-woff2-Font-Files (3认同)
  • 看起来规格已更改(再次)。从[RFC 8081](https://tools.ietf.org/html/rfc8081#section-4.4.5)开始,您对application / x-font-woff的建议已过时,正确的mime类型为现在是`font / woff`和`font / woff2`。请参阅链接问题中的[更新后的答案](/sf/answers/359962151/) (2认同)

Sun*_*nil 51

这篇文章的答案非常有用,节省了大量时间.但是,我发现在使用时FontAwesome 4.50,我还必须woff2为扩展类型添加其他配置,如下所示,否则woff2类型请求在Chrome的开发者工具中在控制台>错误下发出404错误.

根据S.Serp的评论,以下配置应放在<system.webServer>标签内.

<staticContent>
  <remove fileExtension=".woff" />
  <!-- In case IIS already has this mime type -->
  <mimeMap fileExtension=".woff" mimeType="application/x-font-woff" />
  <remove fileExtension=".woff2" />
  <!-- In case IIS already has this mime type -->
  <mimeMap fileExtension=".woff2" mimeType="application/x-font-woff2" />
</staticContent>
Run Code Online (Sandbox Code Playgroud)

  • 你提到的标签`<staticContent>`必须在`<system.webServer>`标签内 (3认同)

adr*_*nat 44

实际上@Ian Robinson的答案效果很好,但Chrome会继续抱怨这条消息:" 资源被解释为Font但是使用MIME类型application/x-woff进行传输 "

如果你这样做,你可以改变

应用程序/ x-WOFF

application/x -font -woff

并且您将不再有任何Chrome控制台错误!

(在Chrome 17上测试过)


Dha*_*777 15

IIS7的解决方案

我也遇到了同样的问题.我认为从服务器级别进行此配置会更好,因为它适用于所有网站.

  1. 转到IIS 根节点,然后双击"MIME类型"配置选项

  2. 单击右上方"动作"面板中的"添加"链接.

  3. 这将打开一个对话框.添加.woff文件扩展名并将"application/x-font-woff"指定为相应的MIME类型.

添加.woff文件扩展名的MIME类型

转到MIME类型

添加MIME类型

以下是我在IIS 7中解决问题的方法

  • 请注意,不鼓励[仅限链接的答案](http://meta.stackoverflow.com/tags/link-only-answers/info),SO答案应该是搜索解决方案的终点(相比之下)引用的另一个中途停留,随着时间的推移往往会变得陈旧.请考虑在此处添加独立的概要,并将链接作为参考. (2认同)

mar*_*oss 9

除了Ian的回答之外,我还必须允许请求过滤模块中的字体扩展使其工作.

<system.webServer>
  <staticContent>
    <remove fileExtension=".woff" />
    <remove fileExtension=".woff2" />
    <mimeMap fileExtension=".woff" mimeType="application/x-font-woff" />
    <mimeMap fileExtension=".woff2" mimeType="application/x-font-woff" />
  </staticContent>
  <security>
      <requestFiltering>
          <fileExtensions>
              <add fileExtension=".woff" allowed="true" />
              <add fileExtension=".ttf" allowed="true" />
              <add fileExtension=".woff2" allowed="true" />
          </fileExtensions>
      </requestFiltering>
  </security>    
</system.webServer>
Run Code Online (Sandbox Code Playgroud)


Thu*_*der 8

运行IIS服务器管理器(运行命令:inetmgr)打开Mime类型并添加以下内容

文件扩展名: .woff

MIME类型:application/octet-stream