最近启用全站https之后,却发现地址栏里面却还没有小绿锁 -- 检查了下网络请求,发现原来是多说搞的鬼:
多说的头像有一些不是https的,如:
http://wx.qlogo.cn/mmopen/5YxiaxTAIu0nOId2JW67SDEgJqPNjx33IeUNG5QJLuddhd45icL0R905icmdXbSib4H9FLib1IUsjA67ePswvZ9PxVA/0
其实呢,就上面这个这个头像而言,将http协议改成https协议后其实也是能够访问的。所以呢,就有了一个很简单的解决方案:
首先,把多说的嵌入脚本下载保存到本地。
wget https://static.duoshuo.com/embed.js
其次,打开这个文件,格式化一下,找到avatarUrl
这个函数,将其修改为这样:
avatarUrl: function (e) {
return ((e.avatar_url || rt.data.default_avatar_url) + '').replace(/^http:/, location.protocol);
}
最后,压缩下这个js,并替换原本的js:
<script type="text/javascript">
var duoshuoQuery = {short_name:"<%= config.duoshuo_shortname %>"};
setTimeout(function() {
var ds = document.createElement('script');
ds.type = 'text/javascript';
ds.async = true;
ds.src = '/lib/duoshuo-embed.min.js';
ds.charset = 'UTF-8';
(document.getElementsByTagName('head')[0]
|| document.getElementsByTagName('body')[0]).appendChild(ds);
}, 10);
</script>
构建并发布网站,OK了。
有个小bug:如果头像的服务器不支持https的话,就无法显示头像了。这其实也是有办法解决的,比如搞个反向代理,将http转换成https。不过有点麻烦,懒得弄了。