解决多说评论框不支持SSL

最近小站开了全站SSL,因为发现启用后台SSL后,加密文章不能正常的输入密码来显示(抓包发现当点击确认时,WP会向/wp-login.php发一个post,但是链接是HTTP开头,估计因为这个所以无法验证密码,故无法访问设密码的文章)

然后为了解决上述问题我打开全站SSL,发现多说评论框无法正常显示...于是暂时换回WP原生的评论框(即:停用『多说』插件),但由于差劲的某公司主机不能使用PHP Mail();函数,导致无法发邮件通知收到评论的文章作者。所以最近有琢磨着重新启用『多说』


启用多说后我打开Chrome的开发者工具然后再访问一个本应有多说评论框的页面,果然评论框处只有文字,然后我去看了一下Console选项卡,里面有个错误:Blocked,大致意思是说页面已经使用https加载,但网页上的一个来自http://static.duoshuo.com的,名称为embed.js内容也使用Https加载*。

*:如果网页是https,而站外高危内容(如.css .js等)仍使用http,那浏览器不会加载,如果选择"加载不安全的脚本"(以Chrome为例,在地址栏的最右端),会发现https被打叉。

如果是非高危内容,比如.jpg .mp3等的链接不是https,那么地址栏最左端的"挂锁标志"会有叹号(或小三角)


由于经过测试,embed.js似乎可以用https加载,故研究了一下如何从多说的PHP文件下手解决问题

如何解决?

1.将/wp-content/plugins/duoshuo文件夹用FTP拉取到本地

2.用文本编辑器(*:不推荐Windows的记事本)打开WordPress.php

找到这一行(在590行左右):

<script type="text/javascript" src="http://static.<?php echo self::DOMAIN;?>/embed.js" charset="UTF-8" async="async"></script>

修改为:

<script type="text/javascript" src="https://static.<?php echo self::DOMAIN;?>/embed.js" charset="UTF-8" async="async"></script>

再找到这一行:

ds.src = 'http://static.duoshuo.com/embed.js';

修改为:

ds.src = 'https://static.duoshuo.com/embed.js';

3.FTP上传回原位置.


遗留问题:

1.后台的『多说评论』中有内容无法加载(尚在研究解决方法)

2.如果有多说用户使用国内社交网站(QQ空间,微博等)的头像,会发生HTTPS挂锁标志前出现叹号(由于那些社交网站的头像链接似乎无法用https,故暂时无解)

11条评论

  1. 除了腾讯头像,其他网站的头像对ssl无解,甚至以前网易微博的头像的ssl证书居然是12306的(和12306在同一个cdn节点上)

评论已关闭。