MENU

解决多说Https不绿锁的问题

多说将于2017年6月1日正式关停服务

虽然多说已经支持HTTPS的评论了,但是第三方头像还支持的不够完美。
解决方案,首先使支持https的头像(例如QQ、微信头像)更换链接http://为https://,然后利用一个php文件反代不支持https的头像,最后把默认头像放到本地(多说默认头像已经支持https但是我更换默认头像一直出错更换不了)。

1.把下面代码保存为一个php文件上传到网站目录,我这里保存为 ds.php

<?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稍加改造
?>

2.下载多说的embed.js文件先进行格式化,然后修改
搜索

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

修改为

avatarUrl: function(e) {
if (document.location.protocol == "https:") {
    if (e.avatar_url) {
        var matched;
                if (matched = e.avatar_url.match(/^([^\/]*(\/\/q\.)*(\/\/app\.)*qlogo\.cn\/.+\/)\d{2}$/)) {
                    e.avatar_url = matched[1] + "100";
                    e.avatar_url = e.avatar_url.replace(/^http\:\/\//, "https://")
                } else if (matched = e.avatar_url.match(/^(.*avatar\.duoshuo\.com\/avatar\-)\d{2}(\/.+)$/)) {
                    e.avatar_url = e.avatar_url.replace(/^http\:\/\//, "https://")
                } else if (matched = e.avatar_url.match(/^(.*qlogo\.cn\/.+\/)\d{2}$/)) {
                    e.avatar_url = matched[1] + "100"
                } else if (matched = e.avatar_url.match(/^(.*sinaimg\.cn\/crop\.\d+\.\d+\.\d+\.\d+\.)\d+(\/.+\..+)$/)) {
                    e.avatar_url = matched[1] + "100" + matched[2]
                } else if (e.avatar_url.match(/^.*img\d+\.douban\.com.*$/)) {
                    e.avatar_url = e.avatar_url.replace(/img\d+\.douban\.com/, "img2.doubanio.com")
                }
                if (e.avatar_url.match(/^http:\/\/wx\.qlogo\.cn.*$/) || e.avatar_url.match(/^.*avatar\.duoshuo\.com.*$/) || e.avatar_url.match(/^(.*qlogo\.cn\/qqapp\/\d+\/.+\/)100$/)) {
                    e.avatar_url = e.avatar_url.replace(/^http\:\/\//, "https://")
                }
                if (e.avatar_url.match(/^.*sinaimg.cn\/.+\..+$/)) {
                    e.avatar_url = e.avatar_url.replace(/^http\:\/\//, "https://")
                }
        if (e.avatar_url.match(/^http:\/\/.+$/)) {
            e.avatar_url = "https://xxx.com/ds.php?s=" + e.avatar_url;
        }
    } else {
        rt.data.default_avatar_url = "https://xxx.com/touxiang/default.jpg";
        }
}
return e.avatar_url || rt.data.default_avatar_url
}

注意修改ds.php链接和头像链接

3.修改embed.js的引用地址(由于我用的主题设置里面可以自定义链接就不用修改了)

    <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>

参考

巧用七牛使多说完美兼容 Https
多说修改支持 HTTPS(改进)
多说HTTPS头像解决方案

标签: 无
返回文章列表文章二维码打赏
本页链接的二维码
打赏二维码