我正在为我的网站使用webfont(使用Spring为Apache Tomcat 6服务器制作)。我将我的字体包含在我的css文件中,字体为:
@font-face{
font-family:'FontAwesome';
src:url('fonts/fontawesome-webfont.eot?v=3.0.1');
src:url('fonts/fontawesome-webfont.eot?#iefix&v=3.0.1') format('embedded-opentype'),
url('fonts/fontawesome-webfont.woff?v=3.0.1') format('woff'),
url('fonts/fontawesome-webfont.ttf?v=3.0.1') format('truetype');
font-weight:normal;
font-style:normal }
此css在“layout.jsp”文件中调用,该文件由所有其余jsp页面调用,具有以下内容:
<link href="<c:url value='/styles/font-awesome.min.css'/>" rel="stylesheet" type="text/css"/>
当我通过http:/// webSite
在内部访问我的网站时,这适用于每个浏览器但是,我们还有一个Apache服务器,它通过SSL(使用安全证书)在URL https:///中为网站提供服务,该URL重定向到以前的URL。 使用SSL-https配置时,Web在每个浏览器中运行良好,但字体不在IE8中加载,也不在IE9中加载。
这是: - 通过http:字体在每个浏览器中都能很好地加载,包括IE8和IE9 - 通过https:字体在每个浏览器中加载良好,但IE8和IE9
可以随时从浏览器访问该字体。这是,如果我写文件的路径,我可以毫无问题地下载它。更重要的是,在资源管理器的开发人员工具下,在网络选项卡中,我可以看到字体已正确下载(状态:200)。
我尝试使用byte64编码将我的字体完全包含在我的CSS中,而不是使用fontSquirrel生成器的文件路径:
@font-face {
font-family: 'fontawesomeregular';
src: url('fonts/fontawesome-webfont.eot');
}
@font-face {
font-family: 'fontawesomeregular';
src: url(data:application/x-font-woff;charset=utf-8;base64,[BYTE64_STRING]) format('woff'),
url('fonts/fontawesome-webfont.ttf') format('truetype');
font-weight: normal;
font-style: normal;
}
这样做,字体在IE9中加载良好,但在IE8中没有。起初,我认为这可能是由URL限制为32Kb引起的。所以,我减少了字体的字符集,将其大小减小到大约20kb,在IE8中仍然没有运气。
任何帮助?
答案 0 :(得分:0)
我遇到了完全相同的问题,并最终修复了它。我注意到一个特定的Web字体在一个HTTPS域上的IE8 / 9中工作,但在另一个上没有。不起作用的域的服务器是为.eot请求发送以下HTTP响应头:
Cache-Control: no-cache
当删除此标题后,字体再次在IE8 / 9中运行。我希望这对你也有帮助。
答案 1 :(得分:0)
实际的答案是,使用代理,向浏览器隐藏任何缓存无效的标头。 就像“cache-control”和pragma:“no-cache”标头返回给浏览器。
我使用了这样的nginx,将以下命令添加到https代理位置:
proxy_hide_header Cache-Control;
proxy_hide_header Pragma;
请参阅here for details和nginx。
使用apache httpd,您将找到语法here