多说HTTPS头像解决方案

出于装逼的需求,HTTPS小绿锁自然是一个爱折腾的博主少不了的东西。

目前多说已经支持HTTPS的评论了。头像还是一个坑。

加上又用了静态的Hexo,该怎么解呢。

客官先喝杯茶。

弄个图片代理就行了。


把下面这个文件保存为php,然后上传到渣浪SAE

至于为什么是SAE,因为便宜,简单,就一个文件。

当然七牛也是可以缓存多说头像的。

怎么简单怎么来,说说SAE吧。

php代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
ob_start();
$src = $_GET['s'];
$src = preg_replace('/http:\/\/.+\.gravatar\.com/', 'http://cn.gravatar.com', $src);
$timeout = stream_context_create(array(
'http' => array(
'timeout' => 1.0
)
));
$data = file_get_contents($src, 0, $timeout);
if ($src != 'null') {
header('Content-Type:image/png');
if (substr($data, 0, 3) === "\xFF\xD8\xFF" || substr($data, 1, 3) === "\x50\x4E\x47") {
echo $data;
} else {
echo file_get_contents(dirname(__FILE__) . "/none.jpg", 0, $timeout);
}
} else {
echo file_get_contents(dirname(__FILE__) . "/none.jpg", 0, $timeout);
}
//原作者: https://geeku.net/1878.html
//针对SAE稍加改造
?>

例如我保存为 ds.php

传到SAE之后得到的地址是

https://xxxx.sinaapp.com/ds.php?s=


以上代理结束。接下来来搞多说的设置

然后把多说的js文件搞到本地

http://static.duoshuo.com/embed.js

嗯,压缩过的很难阅读,在线格式化一下。

然后搜索
js代码1:

1
2
3
avatarUrl: function(e) {
return e.avatar_url || rt.data.default_avatar_url
}

替换为
js代码2:

1
2
3
avatarUrl: function(e) {
return 'https://xxxx.sinaapp.com/ds.php?s='+e.avatar_url || 'https://xxxx.sinaapp.com/ds.php?s='+nt.data.default_avatar_url
}

保存embed.js

把这个放到你的站点目录下


然后修改多说评论的引用地址
js代码3:

1
2
3
4
5
6
7
8
9
10
11
<script type="text/javascript">
var duoshuoQuery = {short_name:"你的多说ID"};
(function() {
var ds = document.createElement('script');
ds.type = 'text/javascript';ds.async = true;
ds.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') + '/js/embed.js';
ds.charset = 'UTF-8';
(document.getElementsByTagName('head')[0]
|| document.getElementsByTagName('body')[0]).appendChild(ds);
})();
</script>

/js/embed.js 就是存放embed.js的地址。

至此,完事。

多说的评论头像就搞定了,配置一下SSL,小绿锁就出现了。

Ps. 多说很快就会推出带https的头像了,然后就没然后了