所以我'm experiencing an issue with Font Awesome in IE8 when using HTTPS in my own site and this is even reproducible on Font Awesome'自己的网站 . 如果我在IE8中转到Font Awesome over HTTPS,我会获得所有图标的框,但是如果我去Font Awesome over HTTP我会正确渲染图标 .
这里有什么问题?我听说它可能与通过HTTPS的Font Awesome中的相对字体路径有关,但不确定 .
以下是喜欢此类内容的人截图:
Update
所以这里是引用字体并加载CSS的代码 . 我将使用Font Awesome网站上的代码,因为这似乎是Font Awesome的一个问题,不一定与我的网站有关:
引用CSS和图标的HTML:
<link rel="stylesheet" href="../assets/css/site.css">
<link rel="stylesheet" href="../assets/css/pygments.css">
<link rel="stylesheet" href="../assets/font-awesome/css/font-awesome.css">
...
<div class="fa-hover col-md-3 col-sm-4">
<a href="../icon/adjust"><i class="fa fa-adjust"></i> fa-adjust</a>
</div>
在 font-awesome.css
内:
@font-face {
font-family: 'FontAwesome';
src: url('../fonts/fontawesome-webfont.eot');
src: url('../fonts/fontawesome-webfont.eot?#iefix') format('embedded-opentype'),
url('../fonts/fontawesome-webfont.woff?v=4.0.3') format('woff'),
url('../fonts/fontawesome-webfont.ttf?v=4.0.3') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.0.3#fontawesomeregular') format('svg');
font-weight: normal;
font-style: normal;
}
5 回答
我已经确定了问题并将发布答案以防其他人遇到同样的问题 . 问题在于我们与字体文件一起发送的HTTP缓存标头 . 显然这会导致IE8 over HTTPS因某些原因无法加载字体(如果有人知道真正的原因请在下面评论) . 成功的 Headers 应如下所示:
但是这样被发送:
这仅在IE中使用https发生 .
从防止缓存的fontawesome相关文件中删除任何HTTP标头,例如
删除这些文件的缓存控件后,您应该看到您的图标 . 重新加载页面后,所有相关的fontawesome文件都应显示HTTP代码304,即文件来自浏览器缓存 .
我也是这么想,
在web.xml中添加NoCacheHeaderFilter并提供排除文件路径 .
像这样添加过滤器 .
实际的答案是,使用代理,向浏览器隐藏任何缓存控制和编译指示:“no-cache”标头返回给浏览器 . 我使用了像这样的nginx,将以下命令添加到https代理位置:
见here for details .