通过SSL访问Web时,IE8和IE9中没有加载字体

时间:2013-09-19 09:21:21

标签: apache ssl font-face

我正在为我的网站使用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中仍然没有运气。

任何帮助?

2 个答案:

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

相关问题