FontAwesomeを使用してアイコン表示しようとしたが、
表示されずにハマったので備忘録的に残しておこうと思います。
皆さんの参考になれば幸いです。
環境
Webサーバ :IIS ブラウザ :IE11 FontAwesome :V4.4(Webサーバのfontsフォルダに配置) プロトコル :https原因
FontAwesomeには、特定の条件でアイコンが表示されないことがあるようです。 [参考] https://github.com/FortAwesome/Font-Awesome/wiki/Troubleshooting#im-hosting-fonts-on-my-server-and-icons-dont-show-up[内容抜粋]
サーバーでフォントをホストしていますが、アイコンが表示されません
以下を確認してください。
1.サーバーのMIMEタイプを適切に構成しました
2.クロスオリジンリソースシェアリング(CORS)を適切に構成しました
3.Internet Explorerの場合:no-storeキャッシュ制御ヘッダーにオプションがあるファイルは提供されません
4.Internet ExplorerおよびHTTPSの場合:no-cacheプラグマヘッダーにオプションがあるファイルは提供されません
5.Internet Explorerの場合:@font-face定義内のクエリ文字列を削除してみてください。カスタムcssファイルが必要です
web.configに以下の設定を行っており、3、4の条件にハマっていました。
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Cache-Control" value="no-store" />
<add name="Pragma" value="no-cache" />
</customHeaders>
</httpProtocol>
</system.webServer>
対策
単純に3,4の条件となっている設定を外すことができるなら、それでも良いと思います。単純に3,4の条件を外すことができない場合、
以下の対策を行うことでアイコンが表示されるようになりました。
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Cache-Control" value="no-store" />
<add name="Pragma" value="no-cache" />
</customHeaders>
</httpProtocol>
</system.webServer>
<location path="fonts">
<system.webServer>
<httpProtocol>
<customHeaders>
<remove name="Cache-Control" />
<remove name="Pragma" />
</customHeaders>
</httpProtocol>
</system.webServer>
</location>
<location>~</location>の内容を追記しました。
FontAwesomeのファイルはキャッシュしても問題ないと判断したため、
それらを格納しているフォルダ"fonts"のみ、Cache-Control、Pragmaの設定を外しました。