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

vic*_*ico 28 css wordpress https fonts 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.'" />';
            }
Run Code Online (Sandbox Code Playgroud)

Ste*_*ppo 45

编辑你的主题取代每个出现http://fonts.googleapis.com/...https://fonts.googleapis.com/...(记住s).

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

  • 三年后,情况发生了变化.现在不鼓励使用协议相对URI,因为安全连接更容易设置,而且对于许多常见用途而言几乎是免费的.如果你可以通过`https`服务,那么一定要做到. (5认同)

har*_*rmv 23

使用协议相对URI

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

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

编辑您的主题,取代每次http://fonts.googleapis.com/...出现//fonts.googleapis.com/...


Yat*_*ngh 7

让浏览器处理所有内容只需从您的引用中删除"http"即可.

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

https://fonts.googleapis.com/css?family=Open+Sans:700,600,800,400
Run Code Online (Sandbox Code Playgroud)

//fonts.googleapis.com/css?family=Open+Sans:700,600,800,400
Run Code Online (Sandbox Code Playgroud)

同样的

http://maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css
Run Code Online (Sandbox Code Playgroud)

//maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css
Run Code Online (Sandbox Code Playgroud)