Почему @ font-face выдает ошибку 404 в файлах woff?


422

Я использую @font-faceна сайте моей компании, и это работает / выглядит великолепно. За исключением Firefox и Chrome выдает ошибку 404 в .woffфайл. IE не выдает ошибку. У меня есть шрифты, расположенные в корне, но я пробовал со шрифтами в папке css и даже дал полный URL для шрифта. Если удалить эти шрифты из моего файла 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;
}

какая у вас версия для Firefox и Chrome? Gecko 1.9.2 (Firefox 3.6) добавляет поддержку WOFF.
Сотирис

Попробуйте снова конвертировать в OTF в Woff. У меня была похожая проблема, и анализ файла был поврежден. Это хороший сайт для преобразования в различные типы шрифтов. onlinefontconverter.com
Stacksonstacksonstacks

Ответы:


722

Я испытывал этот же симптом - 404 для файлов woff в Chrome - и запускал приложение на Windows Server с IIS 6.

Если вы находитесь в такой же ситуации, вы можете исправить это, выполнив следующие действия:

Решение 1

«Просто добавьте следующие объявления типов MIME через IIS Manager (вкладка« Заголовки HTTP »свойств сайта): .woff application / x-woff »

Обновление: в соответствии с MIME-типами для woff-шрифтов и Grsmto фактическим MIME-типом является application / x-font-woff (по крайней мере, для Chrome). x-woff исправит Chrome 404s, x-font-woff исправит предупреждения Chrome.

По состоянию на 2017 год : шрифты Woff теперь стандартизированы как часть спецификации RFC8081 для типа mime font/woffи font/woff2.

IIS 6 MIME Типы

Спасибо Себу Даггану: http://sebduggan.com/posts/serving-web-fonts-from-iis

Решение 2

Вы также можете добавить типы MIME в веб-конфигурацию :

  <system.webServer>
    <staticContent>
      <remove fileExtension=".woff" /> <!-- In case IIS already has this mime type -->
      <mimeMap fileExtension=".woff" mimeType="font/woff" />
    </staticContent>    
  </system.webServer>

5
Обратите внимание, что вы можете получить ошибку Cannot add duplicate collection entry of type ‘mimeMap’ with unique key attribute ‘fileExtension’...из-за конфликта с файлом applicationhost.config. Вы можете исправить это, добавив <remove fileExtension=".woff" />прямо перед указанием нового mimeMap в файле web.config, чтобы удалить ложную копию.
Пит

11
Тип MIME был стандартизирован как application/font-woff.
Фернандо Коррея,

5
Это сделал трюк! Если у вас есть та же проблема, но с файлом .woff2, просто добавьте другой тип MIME (или конфиг) с этим расширением
mapache

2
Похоже, что спецификация изменилась (снова). Ваш совет для application/x-font-woffуже устарел, по состоянию на RFC 8081 правильный тип MIME сейчас font/woffи font/woff2. Смотрите обновленный ответ в связанном вопросе
Liam

3
Это решение не сработало для меня. Что меня подвело, так это
Ким Лейдж,

53

Ответ на этот пост был очень полезным и сэкономил много времени. Однако я обнаружил, что при использовании FontAwesome 4.50мне пришлось добавить дополнительную конфигурацию для woff2типа расширения, как показано ниже, в противном случае запросы на woff2тип выдавали ошибку 404 в Инструментах разработчика Chrome в разделе «Консоль> Ошибки».

Согласно комментарию 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>

3
и ваш упомянутый тег <staticContent>должен быть внутри <system.webServer>тега
S.Serpooshan

работает отлично, отчеты из Windows Server 2012 r2, ASP.Net MVC5.
Кромвель

44

На самом деле ответ @Ian Robinson работает хорошо, но Chrome продолжит жаловаться с таким сообщением: « Ресурс интерпретируется как шрифт, но передается с помощью приложения MIME-типа / x-woff »

Если вы получите это, вы можете изменить

применение / х-Уофф

в

application / x -font -woff

и у вас больше не будет ошибок консоли Chrome!

(проверено на Chrome 17)


Где ты это изменишь? В браузере или на сервере?
Джейк Уилсон

Как объяснено в ответе выше, это должен быть сервер. Это решение для Windows Server с IIS 6.
adriendenat

1
Хром все еще жалуется на меня с помощью x-font-woff
Sonic Soul

Чтобы повторить мой комментарий : похоже, что спецификация изменилась (снова). Ваш совет для application/x-font-woffуже устарел, по состоянию на RFC 8081 правильный тип MIME сейчас font/woffи font/woff2. Смотрите обновленный ответ в связанном вопросе
Лиам

15

Решение для IIS7

Я тоже сталкивался с той же проблемой. Я думаю, что делать эту конфигурацию на уровне сервера было бы лучше, поскольку она применима ко всем веб-сайтам.

  1. Перейдите в корневой узел IIS и дважды щелкните параметр конфигурации «Типы MIME».

  2. Нажмите ссылку «Добавить» на панели «Действия» в правом верхнем углу.

  3. Это вызовет диалог. Добавьте расширение файла .woff и укажите «application / x-font-woff» в качестве соответствующего типа MIME.

Добавить MIME-тип для расширения имени файла .woff

Перейти к MIME Типы

Добавить MIME Тип

Вот что я сделал, чтобы решить проблему в IIS 7


2
Обратите внимание, что ответы только на ссылки не приветствуются , поэтому ответы SO должны быть конечной точкой поиска решения (по сравнению с еще одной остановкой ссылок, которая, как правило, устаревает со временем). Пожалуйста, рассмотрите возможность добавления отдельного краткого обзора здесь, сохраняя ссылку в качестве ссылки.
Клеопатра

@kleopatra - обновил ответ с подробностями и удалил ссылку.
Dhanuka777,

«Я думаю, что делать эту конфигурацию на уровне сервера было бы лучше, поскольку она применима ко всем веб-сайтам». - Ну, это действительно зависит. Если вы имеете дело с корпоративным сервером, на котором возможно работает несколько внутренних приложений, то вы правы. С другой стороны, если вы запускаете общедоступный веб-сайт, который распространяется на несколько серверов, метод web.config выигрывает с точки зрения «согласованности» (т. Е. Он будет там, вы не можете забыть настроить его на одном сервер).
Balázs

10

В дополнение к ответу Яна я должен был разрешить расширения шрифтов в модуле фильтрации запросов, чтобы он работал.

<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>

8

Запустите диспетчер сервера IIS (команда run: inetmgr). Откройте Mime Types и добавьте следующее

Расширение имени файла: .woff

MIME-тип : application / octet-stream


1

Я перепробовал массу вещей, связанных с разрешениями, типами MIME и т. Д., Но для меня все закончилось тем, что web.config удалил обработчик статических файлов в IIS, а затем явно добавил его обратно для каталогов, которые будут иметь статические файлы. Как только я добавил узел местоположения для своего каталога и добавил обработчик обратно, запросы перестали получать 404 с.


1

Если вы используете CodeIgniter под IIS7:

В вашем файле web.config добавьте woff к шаблону

<rule name="Rewrite CI Index">
  <match url=".*" />
    <conditions>
      <add input="{REQUEST_FILENAME}" pattern="css|js|jpg|jpeg|png|gif|ico|htm|html|woff" negate="true" />
    </conditions>
    <action type="Rewrite" url="index.php/{R:0}" />
 </rule>

Надеюсь, поможет !


0

Это может быть очевидно, но это несколько раз сбило меня с 404s ... Убедитесь, что права доступа к папке шрифтов установлены правильно.



0

Если у вас нет доступа к конфигурации вашего веб-сервера, вы также можете просто переименовать файл шрифта, чтобы он заканчивался на svg (но сохранял формат). У меня отлично работает в Chrome и Firefox.


0

Если все еще не работает после добавления типов MIME, проверьте, включена ли «Анонимная аутентификация» в разделе «Аутентификация» на сайте, и убедитесь, что выбрали «Идентификатор пула приложений» в соответствии с данным снимком экрана.

введите описание изображения здесь



-1

Решил это:

Я должен был использовать метод Mo'Bulletproofer


Значит ли это, что вы больше не используете WOFF? Может ли быть так, что ваш веб-сервер неправильно настроен для обслуживания файлов WOFF? Например, смотрите это: stackoverflow.com/questions/3594823/mime-type-for-woff-fonts/…
mercator

Я тестировал шрифт с кодировкой на других машинах. Отображает нормально и без 404 ошибки.
dcp3450

Это не позволит мне. Кодировка это способ долго. Это объясняется здесь: paulirish.com/2010/font-face-gotchas
dcp3450

1
Ссылка в ответе больше не существует.
Муним Мунна
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.