最近小站开了全站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,故暂时无解)
除了腾讯头像,其他网站的头像对ssl无解,甚至以前网易微博的头像的ssl证书居然是12306的(和12306在同一个cdn节点上)
是的 这个问题似乎真无解了…
:-)
多说插件还好吧,只是个别浏览器不兼容而已。
这不是个别现象 如果网站是Https的但页面上有高危内容(.js .css)不使用https加载 那么这些内容不会被加载
多说好像死了。。
?
坚持不用多说~
嗯 好吧…
看来多说应该做点什么了
嗯 是的 不过多说的插件好像有大约1年没更了 还有就是前几天春节 他们官网论坛被人刷广告都没人管xd