字体上的超赞错误404


78

我不知道发生了什么,但是在浏览器控制台中我可以看到3个与font-awesome相关的错误

 GET http://www.desktop.just4bettors.mobi/fonts/fontawesome-webfont.woff2?v=4.3.0 
 GET http://www.desktop.just4bettors.mobi/fonts/fontawesome-webfont.woff?v=4.3.0
 GET http://www.desktop.just4bettors.mobi/fonts/fontawesome-webfont.ttf?v=4.3.0 

我知道这很荒谬,我无法自己弄清楚,但一切似乎都很好,在我的index.html中,我有类似的内容

<link rel="stylesheet" href="bower_components/font-awesome/css/font-awesome.css" />

这就是我与字体超赞相关的全部内容,我已经检查了路径,对此我没有错。

你们所有人都在发生这种情况吗?

在此处输入图片说明

更新

这是NGINX的部分,我在标题中加载了一些内容

add_header Content-Security-Policy "style-src 'self' 'unsafe-inline'
https://fonts.googleapis.com
https://fonts.gstatic.com
https://themes.googleusercontent.com
https://assets.zendesk.com;
font-src 'self' https://themes.googleusercontent.com
https://fonts.gstatic.com;";

1
您是否在服务器上上传了字体?
Vucko 2015年

@Vucko我应该怎么做?
2015年

Answers:


80

将.woff添加为应用程序服务器的mime类型(例如iis-> mime类型)作为application / font-woff


5
我必须做两个输入,一个用于woff,一个用于woff2。像魅力一样工作。谢谢!
ʀʀʏ

138

更好的是,将此部分添加到您的web.config中,然后那些mime类型将自动添加到您部署到的任何服务器上的IIS。(删除是为了避免重复的mime类型错误,如果它们已经存在的话)

  <system.webServer>
    <staticContent>
      <remove fileExtension=".woff" />
      <mimeMap fileExtension=".woff" mimeType="application/font-woff" />
      <remove fileExtension=".woff2" />
      <mimeMap fileExtension=".woff2" mimeType="font/x-woff" />
    </staticContent>  
  </system.webServer>

1
如果未使用mime类型映射文件,则在控制台中会看到有关丢失文件的消息。添加文件扩展名和mime类型的定义后,fontawesome woff2正确加载。谢谢。
Marek Bar

1
对于运行.NET Web应用程序的人们来说,这绝对是最实用的解决方案。
DVK

1
@jhoelz到目前为止,对于通常无法直接访问Web服务器的WEB开发人员来说,这是最好的答案!确实非常感谢您。
dpant

在Azure上发布后,我遇到了这个问题。您的解决方案就像一个魅力。非常感谢你。
perozzo

这也适用于使用Azure App Services部署其前端应用程序的人。例如,对于web.config/ src文件夹下的Angular放置文件,然后调整angular.json / angular-cli.json以添加"src/web.config"到资产数组中。之后,只需像往常一样将所有内容部署到Azure。这样的.woff / woff2错误消失了。
hastrb

8

我对iis有同样的问题。我添加了一个新的MIME类型,文件扩展名为“ .woff2”,作为MIME类型添加了“ font / x-woff”,问题得以解决。


6

1.转到IIS,找到您的网站,找到MIME类型, 然后单击添加

2.将“ woff2”放置在附加文件名中将“ application / font-woff”放置在Mime类型

3.在IIS上重新启动网站


3

您提供的网址全部无效,并且未链接到资源。据我们任何人都能从您的帖子中得知-它们根本不存在。

您是否针对预期的文件夹结构正确上传了文件?


一切正常,直到我决定添加Content-Security-Policy,请参阅我对这个问题的更新。您在谈论哪些链接?
2015年

如果您说此链接//www.desktop.just4bettors.mobi/fonts/fontawesome-webfont.woff2?v=4.3.0 当然有效,那么这www.desktop.just4bettors.mobi是我正在研究的页面,不对,但是没有得到那些字体很棒的部分的链接。

www.desktop.just4bettors.mobi/fonts/fontawesome-webfont.woff2?v=4.3.0和www.desktop.just4bettors.mobi/bower_components/font-awesome/css/font-awesome.css都进入404 Not Found 。
xengravity

这些链接是本地的,just4bettors是我正在工作的域。

3
我的建议是尽快尝试CDN,看看是否可以解决问题。似乎您在本地错误地引用了它,因此,如果您可以引用CDN并且它可以工作,则您知道本地的文件放置在错误的位置。
xengravity

1

我在只允许使用Apache2 Web服务器的“ cPanel共享主机服务器”上遇到了完全相同的问题。由于共享主机安全设置不允许使用“ Access-Control-Allow-Origin”值的通配符(*)(因为:带宽和资源窃贼),因此我不得不想出一种其他方法来使其工作。

OP提出的这个问题可以推断nginx,但是公认的且最受欢迎的答案似乎是针对IIS的。可能有些人(像我一样)偶然发现了这个问题,以寻找与Apache中的CORS“权限”相关的apache2解决方案,因此这是我解决该问题的灵丹妙药。我将以下内容添加到.htaccess文件中WP站点的根目录的顶部:

<IfModule mod_headers.c>
 <IfModule mod_rewrite.c>
    SetEnvIf Origin "http(s)?://(.+\.)?(othersite\.com|mywebsite\.com)(:\d{1,5})?$" CORS=$0
    Header set Access-Control-Allow-Origin "%{CORS}e" env=CORS
    Header merge  Vary "Origin"
 </IfModule>
</IfModule>

我希望我能为RegEX魔术的这种奇妙功劳而功劳,但我在这篇博文中解释了我如何派生此解决方案的方式,此处涉及到一个类似的问题:Access-Control-Allow-Origin通配符子域,端口和协议

**明显注意:您需要更改域名以匹配您自己的域名。您可以删除(|)RegEx OR,而仅使用一个域名,其中RegEx接受所有子域和根级别域名


1

除以下解决方案外,以上解决方案均不适用于我。请在BundleConfig.cs文件中所有“ bundles.Add”命令之后添加以下行:

BundleTable.EnableOptimizations = false;

这是消除woff mime错误的怪异解决方案..您关闭了包优化。
hastrb

我同意你@hastrb,这很奇怪。
Luis Gouveia

0

转到:http : //fortawesome.github.io/Font-Awesome/get-started/

...使用Bootstrap CDN只需一行代码即可将Font Awesome添加到您的网站中。您甚至不必下载或安装任何东西!”


1
还添加解释与你分享的链接
Sourabh库马尔·夏尔马

7
CDN通常仅适用于脚手架和测试东西。部署到生产环境时,最好将文件放在Web服务器上或拥有自己的CDN。
Nickvda '16

如果要构建Intranet应用程序,也可能不是一个好主意。
kosherjellyfish

0

我有完全一样的问题和错误。删除我的Font-Awesome库并安装最新版本可以解决此问题。


-1

将.woff2作为应用程序/字体-woff添加到您的应用程序服务器mime类型(例如iis-> mime类型)

对我来说很好。

请享用 !!!

:)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.