31

有一个 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

4 回答 4

50

http://fonts.googleapis.com/...编辑您的主题,用https://fonts.googleapis.com/...(注意s)替换每一次出现。

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

于 2014-07-02T14:37:01.707 回答
28

使用协议相对 URI

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

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

编辑您的主题,http://fonts.googleapis.com/...//fonts.googleapis.com/...

于 2016-09-15T10:38:04.423 回答
7

让浏览器处理所有事情,只需从您的参考中删除“http”。

同样,如果您遇到与它们相同的问题,您也必须为其他库做,例如

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
于 2016-11-10T07:42:05.193 回答
1

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

于 2017-12-16T05:07:34.873 回答