IE 11“有时”阻止显示“font-awesome”webfonts

时间:2015-07-31 11:40:27

标签: internet-explorer font-awesome

我们的一些IE11客户端在我们的Web应用程序中没有看到“font-awesome”webfonts。我已经使用我们自己的IE11实例进行了大量测试,也通过跨浏览器测试工具进行了测试。全部正确执行。所以我很难理解为什么IE11的某些设置可能看不到“Font-Awesome”的webfonts?我确实尝试更改安全设置以复制问题,但没有成功。

所以我正在就可能导致此问题的原因寻求一些建议?我能想到的另一件事是,如果是通过Citrix这样的共享服务器提供IE。

提前致谢。

EDIT1

更多证据:

Desktop1   S/W Firewall(on/off)     Windows 7     IE V11.0.9600.17959    Office  Errors
Laptop1    No S/W Firewall          Windows 7     IE V11.0.9600.17959    Office  OK
Laptop1    No S/W Firewall          Windows 7     IE V11.0.9600.17959    Home    OK 
Azure VM   ?? S/W Firewall          Windows 10    IE V11 via Edge        Azure   OK
Azure VM   ?? S/W Firewall          Windows 10    Edge                   Azure   OK
Laptop2    ?? S/W Firewall          Windows 10    Edge                   Home    Errors

更多证据2

当我第一次进入页面时,图标显示。当用户从超链接重新进入页面时,图标不显示。但是ctrl-F5对它进行排序。

更多证据3

我也看到链接到可点击字体的Ajax链接请求变为非活动状态。

更多证据4

当我将我的网站添加到“受限制”时,我甚至无法登录,所以我不相信这就是原因。

发现问题的原因。

我的问题是由IE浏览器历史记录设置通过

引起并修复的
Cog
  - Internet Options
     - General
       - Browsing History
          - Settings
            - Temporary Internet Files
              - Automatic (will cause issue)
              - Every time I visit the webpage (will fix issue)

下面的答案仍然会引起问题,但不是我个案中的原因

发现问题的原因,但不适用于HTTPS

刚刚发现如果我尝试通过Cloudflare实现HTTPS,问题就出现了......

5 个答案:

答案 0 :(得分:5)

IE安全设置

我注意到"受限制网站" 中的网站(在Internet Explorer中)不显示字体很棒而在#34;信任中的网站网站及#34; zone do。

所以我猜这个问题是针对不同用户的不同IE安全设置。

您是否可以要求用户在IE中检查/更改其选项,例如(IE 11的说明,但其他人将非常相似):

  • 设置Cog(右上角的图标)
  • 互联网选项(菜单选项)
  • 安全(标签)
  • 网站(按钮)
  • 输入您网站的网站地址
  • 点击添加(按钮)

N.B。如果您不使用https,您可能还需要选项

  • "要求对此区域中的所有网站进行服务器验证(https :)" - 被取消选择

请求用户进行这些更改,然后从那里进行故障排除。

Fiddler调试

如果您可以访问任何用户的计算机,可以远程访问,或者您可以指导任何高级用户,那么也可以尝试使用其计算机上的优秀Fiddler http代理进行调试看看http请求/响应级别发生了什么。

您还可以更改自己的IE安全设置,以查看是否可以复制问题

答案 1 :(得分:2)

在我的情况下,我只能在使用Win 10 + IE 11时看到此问题。即使在确保正确的IE设置(启用安全区和字体下载)之后,字体也不会呈现。似乎不应该为字体设置缓存标头。

我们正在使用Spring MVC和Tomcat。在CORS过滤器中添加以下代码解决了我的问题。

        if (!request.getServletPath().endsWith(".woff")
                && !request.getServletPath().endsWith(".ttf")) {
            response.setHeader("Cache-Control", "no-cache");
            response.setHeader("Pragma", "no-cache");
            response.setDateHeader("Expires", -1);
        }

https://stackoverflow.com/a/33508291/828062

答案 2 :(得分:1)

  • 齿轨
  • 互联网选项
  • 安全
  • 自定义级别
  • 下载 - >字体下载 - >启用。

答案 3 :(得分:1)

如果您无法为DISA STIG安全原因try this solution that shows you how to Base 64 a font启用可下载字体,请将其用作CSS文件以推送字体。

答案 4 :(得分:0)

从下载字体的端点的响应头中删除Pragma Header为我解决了。

if (request.getServletPath().contains(".woff") || request.getServletPath().contains(".ttf")) {
    headers.remove(HttpHeaders.PRAGMA);
}