如何让百度分享支持ssl?

就在昨天让后发现用https访问有两个问题:

  1. 百度分享无法使用
  2. 当页面刷新缓存的时候是https访问会把使用绝对地址输出的url都变成https,导致在http下点击该链接访问的是https,出现了https/http混合访问的情况。

关于第二点不是本文重点,先说明一下:

ProcessWire的每一个页面对象($page)都可以用两种方式输出它的url:

$page->url : 输出成相对地址,如 /pagepath/

$page->httpUrl : 输出成绝对地址,如 http://www.yourdomain.com/pagepath/

需要注意的是 httpUrl,会根据当前访问的协议http/https自动生成出对应的绝对地址,由于恒馨博客已经用phpFastCache做了页面缓存所以当页面缓存时间到期用https访问的时候页面会出现https的链接,需要指出的是如果没有缓存的话是无此问题的。

那么防止http/https混合出现最好的做法就是将url都输出成相对链接,和本文重点解决百度分享不支持ssl的方法如出一辙。

我用的是百度分享的开发版,其中引用百度分享核心库代码:

with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?cdnversion='+~(-new Date()/36e5)];	

https访问页面的时候百度分享不工作的问题就出在这里的 src='http:// ,已经有热心网友已经把百度分享的核心资源剥离出来了:

https://github.com/hrwhisper/baiduShare

我们需要做的就是把文档Clone/Download下来,然后把static目录放到网站根目录,然后把上面那行引用代码中的http://bdimg.share.baidu.com给删除了就可以完成本地资源(相对路径)的引用了,这样不管http/https都可以使用百度分享的功能了。

如果我不想把static目录访问根目录或者对现有目录有冲突怎么办?

比如我把所有资源目录都放到了/site/templates/static/下面了,只需要做很简单的修改:

  1. 修改上面的引用目录
  2. 找到文件:static/api/js/share.js 查找{staticUrl:"/"}把这里的值改成你想要的目录即可

Post Comment