在HTTPS中加载Google字体,内容被阻止

时间:2014-07-02 14:34:10

标签: css wordpress fonts https mixed-content

有一个wordpress主题会自动拉出选中的字体并从谷歌字体中请求它。当几个选定页面需要ssl时,字体变为missing

查看控制台日志:

  

[已屏蔽]“https://www.example.com/”页面是通过HTTPS加载的,但是运行了来自“http://fonts.googleapis.com/css?family=Alegreya+Sans:300,400,500,700,800”的不安全内容:此内容也应通过HTTPS加载。

会进入代码并使用谷歌字体的所有https请求工作吗?这有什么解决方法吗?

找到了源代码......但好像它已经在做了这个... if逻辑中是否会出错?

$prefix = "http";
            if(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') $prefix = "https";

            if($get_google_font){

            if(!in_array($rule_split[0], $this->used_fonts))
            {
                $this->extra_output .= "\n<!-- google webfont font replacement -->\n";
                $this->extra_output .= '<link id="google_webfont_'.$this->webfont_count.'" rel="stylesheet" type="text/css" href="'.$prefix.'s://fonts.googleapis.com/css?family='.str_replace(' ','+',$rule_split[0]).$font_weight.'" />';
            }

4 个答案:

答案 0 :(得分:44)

使用http://fonts.googleapis.com/...编辑主题,将https://fonts.googleapis.com/...替换为{{1}}(请注意 s )。

在安全页面的上下文中请求时,必须通过安全连接加载可能带来安全风险的资源(例如脚本和字体),原因很明显:它们可能在此过程中受到操纵。

答案 1 :(得分:23)

使用protocol relative URIs

只需使用//前缀即可。 (instead of http[s]://

  • 在https页面上,将加载安全版本。
  • 在普通的http页面上,将加载普通的http版本。

使用http://fonts.googleapis.com/...

修改您的主题,以//fonts.googleapis.com/...替换每个出现的Bundle b=getIntent().getExtras();

答案 2 :(得分:7)

让浏览器处理所有内容,只需从您的引用中删除“http”。

如果你遇到同样的问题,你也必须为其他图书馆做 e.g。

https://fonts.googleapis.com/css?family=Open+Sans:700,600,800,400

//fonts.googleapis.com/css?family=Open+Sans:700,600,800,400

同样适用于

http://maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css

//maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css

答案 3 :(得分:1)

当您使用google cdn链接并且无法访问时(例如像china这样的国家/地区),我遇到了这个问题,请尝试使用本地文件代替cdns