internet explorer font face ssl(internet explorer 字体 ssl)

本文介绍了internet explorer 字体 ssl的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我网站的字体在所有使用 http 的浏览器中都可以正常工作.但是,当我更改为 https 时,字体在 IE8 及更低版本中无法正常工作,但在 ie9 中可以正常工作.

The fonts for my site are working fine in all browsers using http. However when I change to https the fonts don't work in IE8 and below, works correctly in ie9.

使用 IE,当我使用 http 键入 .eot 文件的路径时,我可以选择下载文件,但是当我使用 https 时,它说找不到.

Using IE, when I type the path to the .eot file using http, I get the option to download the file, but when I use https, it says it can't be found.

我正在使用自分配证书.iis 7.5 .net 4.0,umbraco 4.7.0 cms,客户端依赖框架(我试过去掉客户端依赖框架,还是不行).

I'm using a self assigned certificate. iis 7.5 .net 4.0, umbraco 4.7.0 cms, client dependency framework (I have tried with client dependency framework removed, still didn't work).

<style type="text/css">    
@font-face {
                font-family: 'GGX88UltraLight';
                src: url('/css/type/ggx88_ul-webfont.eot');
                src: url('/css/type/ggx88_ul-webfont.eot?iefix') format('embedded-opentype'),
                     url('/css/type/ggx88_ul-webfont.woff') format('woff'),
                     url('/css/type/ggx88_ul-webfont.ttf') format('truetype'),
                     url('/css/type/ggx88_ul-webfont.svg#webfontU6kiGgEl') format('svg');
                font-weight: normal;
                font-style: normal;
    }
</style>

可能有用的网络配置值

<staticContent>
  <!-- Set expire headers to 30 days for static content-->
  <clientCache cacheControlMode="DisableCache" cacheControlMaxAge="30.00:00:00" />
  <!-- use utf-8 encoding for anything served text/plain or text/html -->
  <remove fileExtension=".css" />
  <mimeMap fileExtension=".css" mimeType="text/css; charset=UTF-8" />
  <remove fileExtension=".js" />
  <mimeMap fileExtension=".js" mimeType="text/javascript; charset=UTF-8" />
  <remove fileExtension=".json" />
  <mimeMap fileExtension=".json" mimeType="application/json; charset=UTF-8" />
  <remove fileExtension=".rss" />
  <mimeMap fileExtension=".rss" mimeType="application/rss+xml; charset=UTF-8" />
  <remove fileExtension=".html" />
  <mimeMap fileExtension=".html" mimeType="text/html; charset=UTF-8" />
  <remove fileExtension=".xml" />
  <mimeMap fileExtension=".xml" mimeType="application/xml; charset=UTF-8" />
  <!-- HTML5 Video mime types-->
  <mimeMap fileExtension=".mp4" mimeType="video/mp4" />
  <mimeMap fileExtension=".m4v" mimeType="video/m4v" />
  <mimeMap fileExtension=".ogg" mimeType="video/ogg" />
  <mimeMap fileExtension=".ogv" mimeType="video/ogg" />
  <mimeMap fileExtension=".webm" mimeType="video/webm" />
  <!-- Remove default IIS mime type for .eot which is application/octet-stream -->
  <remove fileExtension=".eot" />
  <mimeMap fileExtension=".eot" mimeType="application/vnd.ms-fontobject" /> 
  <mimeMap fileExtension=".otf" mimeType="font/otf" />
  <mimeMap fileExtension=".woff" mimeType="font/x-woff" />
  <mimeMap fileExtension=".crx" mimeType="application/x-chrome-extension" />
  <mimeMap fileExtension=".xpi" mimeType="application/x-xpinstall" />
  <mimeMap fileExtension=".safariextz" mimeType="application/octet-stream" />
</staticContent>
<httpProtocol allowKeepAlive="true">
  <customHeaders>
    <add name="X-UA-Compatible" value="IE=Edge,chrome=1" />
    <add name="Access-Control-Allow-Origin" value="*" />
  </customHeaders>
</httpProtocol>

推荐答案

我在使用 spring-boot 时遇到了同样的问题:我找到的解决方案是

I faced the same behaviour using spring-boot: the solution I found was to

- 隐藏 Pragma 和 Cache-Control 向浏览器返回标头:

Spring-boot 正在响应特定的 Cache-Control 和 Pragma HTTP 标头.

Spring-boot is responding with specific Cache-Control and Pragma HTTP headers.

Cache-Control :"no-cache, no-store, max-age=0, must-revalidate"
Pragma :"no-cache"

Internet Explorer(在我的情况下为 IE11)无法加载带有这些标题的字体.我相信这是一个错误,我们必须解决它.

Internet explorer (IE11 in my case) is not able to load fonts with those headers. I believe its a bug and we have to cope with it.

使用 nginx 代理我们的 spring-boot 应用程序,我可以克服这个问题,使用以下 nginx 配置命令将该标头隐藏到浏览器:

Using nginx to proxy our spring-boot application, I could overcome the problem , hiding that headers to the browser by using the following nginx configuration commands:

server {
        listen 443;
        server_name server.dns.name;
        ssl on;
        ssl_certificate /etc/nginx/ssl/server.dns.name.pem;
        ssl_certificate_key /etc/nginx/ssl/server.dns.name.key;

        location / {
            include  /etc/nginx/mime.types;
            rewrite ^/(.*) /$1 break;
            proxy_pass  http://127.0.0.1:8080;
            proxy_read_timeout 90;

            #IE specific tweak for fonts not to be ignored:
            proxy_hide_header Cache-Control;
            proxy_hide_header Pragma; 
            #END IE specific tweak for fonts not to be ignored
        }
}

这篇关于internet explorer 字体 ssl的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!