最近手上的官網圖文出現“此圖片來自微信公衆平臺,未經允許不可引用”,導致圖片顯示不了,究其原因:因爲微信公衆平臺對圖片採用了防盜鏈設置,微信對外提供了API接口,讓我們可以通過授權的方式獲取到自己公衆號裏面的文章,或者你也可以通過爬蟲去抓取微信的文章,但是微信的圖片默認是不允許外部調用的。
解決方案:【文章來源CSDN Lison原創,請標明出處】
1、下載圖片保存在本地上,發佈圖片時候上傳本地圖片;
2、在JS中提前把圖片加載到本地,然後從本地緩存中讀取圖片
var showImg = function (url) {
var frameid = 'frameimg' + Math.random();
window.img = '<img id="img" src=\'' + url + '?' + Math.random() + '\' /><script>window.onload = function() { parent.document.getElementById(\'' + frameid + '\').height = document.getElementById(\'img\').height+\'px\'; }<' + '/script>';
return '<iframe id="' + frameid + '" src="javascript:parent.img;" frameBorder="0" scrolling="no" width="100%"></iframe>';
}
通過各種iframe,form等來跳過防盜鏈機制,但是這種方法,對代碼的結構影響很大,對一些移動類庫兼容性不太好。
3、在head標籤上加上【經測試,已經被和諧掉了】
<meta name="referrer" content="no-referrer" />
4、 第三方接口方式替換原防盜鏈接【親測有效,難以確保長期有效】
<script type="text/javascript">
function showImage(){
//獲取Class爲main-nav裏面的所有img
//var imglist=$(".main-nav img");
//或使用下面這句,獲取ID爲divArticle裏面的所有img
var imglist=$("#divArticle img");
for(var i=0;i<imglist.length;i++){
if(imglist[i].getAttribute('src')){
if(imglist[i].getAttribute('src').indexOf("mmbiz.qpic.cn")!=-1){
imglist[i].setAttribute('src','http://img01.store.sogou.com/net/a/04/link?appid=100520029&url='+imglist[i].getAttribute('src'));
}
}
}
}
showImage();
</script>
5、微信公衆號文章保存在自己服務器【較麻煩,暫不使用】