使用 HTTPS 的跨浏览器字体嵌入:解决 IE @font-face EOT 加载问题
嵌入时遇到的关键挑战之一使用 @font-face 的字体可确保不同浏览器之间的兼容性。虽然大多数浏览器支持各种字体格式,但 Internet Explorer 7、8 和 9 在通过 HTTPS 访问 EOT 字体时表现出特殊的行为。
尝试通过 HTTPS 加载 EOT 字体时会出现问题,而 HTML包含 @font-face 声明的页面可以托管在 HTTP 或 HTTPS 上。在这种情况下,Internet Explorer 根本无法加载 EOT 字体,即使它通过普通 HTTP 无缝运行也是如此。
要深入研究根本原因,检查托管该字体的服务器至关重要。在大多数情况下,服务器应该为 EOT 字体文件发送适当的内容类型标头,即“application/vnd.ms-fontobject”。
设置 HTTP 标头 Cache-Control 时会出现问题将字体设置为“无缓存”。此设置虽然在 HTTP 环境中可以接受,但会导致 Internet Explorer 忽略通过 HTTPS 下载的字体。
对此行为最可能的解释是,它类似于 KB 815313 中描述的行为,该行为解决了在以下情况下阻止缓存的问题:通过 SSL 下载活动文档。因此,如果“Cache-Control”标头存在并设置为“no-cache”,则删除它应该可以解决问题。
因此,如果您观察 Internet Explorer 在开发人员工具中的字体选项中的进展情况网络视图而不通过 HTTPS 加载 EOT 字体,验证“Cache-Control”标头并将其删除可能是一个潜在的解决方案。通过解决这个细微差别,您可以确保跨浏览器的字体嵌入一致,即使通过 HTTPS 访问字体也是如此。
以上是为什么 Internet Explorer 7、8 和 9 无法通过 HTTPS 加载 EOT 字体?的详细内容。更多信息请关注PHP中文网其他相关文章!