微信公眾號復制的圖片可以正常顯示的辦法


通過瀏覽多方文章,找到了一個 非常好用但是也有很大的坑的辦法:

在頁面中加meta:

<meta name="referrer" content="never">

 

親測遇到的坑:

 

首先,微信復制的圖片,自己網站作為引用,在pc端任何地方都顯示:"本圖片來自微信公眾號,未經許可,不能引用..."之類的字樣在安卓ap端其實是可以正常顯示的,在ios的app端顯示為空白

當加了該meta之后,在pc所有地方都可以正常顯示了,但是ios的app端依然顯示為空白......所以使用該方法如果僅限於在pc端的話,,沒毛病.

 

這里了解一下referer是什么:

 

referrer 屬性可返回載入當前文檔的文檔的 URL。

 

如果當前文檔不是通過超級鏈接訪問的,則為 null。這個屬性允許客戶端 JavaScript 訪問 HTTP 引用頭部。

 

referer metedata 參數可以設置為以下幾種類型的值:

never

always

origin

default

 

如果在文檔中插入 meta 標簽,並且 name 屬性的值為 referer,瀏覽器客戶端將按照如下步驟處理這個標簽:

1.如果 meta 標簽中沒有 content 屬性,則終止下面所有操作

2.content 的值復制給 referrer-policy ,並轉換為小寫

3.檢查 content 的值是否為上面 list 中的一個,如果不是,則將值置為 default

上述步驟之后,瀏覽器后續發起 http 請求的時候,會按照 content 的值,做出如下反應(下面 referer-policy 的值即 meta 標簽中 content 的值)


1.如果 referer-policy 的值為never:刪除 http head 中的 referer

2.如果 referer-policy 的值為default:如果當前頁面使用的是 https 協議,而正要加載的資源使用的是普通的 http 協議,則將 http header 中的 referer 置為空;

3.如果 referer-policy 的值為 origin:只發送 origin 部分;

4.如果 referer-policy 的值為 always:不改變http header 中的 referer 的值,注意:這種情況下,如果當前頁面使用了 https 協議,而要加載的資源使用的是 http 協議,加載資源的請求頭中也會攜帶 referer

 

例子

如果頁面中包含了如下 meta 標簽,所有從當前頁面中發起的請求將不會攜帶 referer


<meta name="referrer" content="never">

如果頁面中包含了如下 meta 標簽,則從當前頁面中發起的 http請求將只攜帶 origin 部分(注:根據原文中的語境,我理解這里的 origin 是包含了 schema hostname 的部分 url,不包含 path 等后面的其他 url 部分),而不是完整的 URL


<meta name="referrer" content="origin">

注意:在使用本文中所述的 meta 標簽的時候,瀏覽器原有的 referer 策略將被打破,比如從 http 協議的頁面跳轉到 https 的頁面的時候,如果設置了適當的值,也會攜帶 referer


此段摘自:http://www.freebuf.com/news/57497.html


反盜鏈的原理


官方輸出圖片的時候,判斷了來源(Referer),就是從哪個網站訪問這個圖片,如果是你的網站去加載這個圖片,那么Referer就是:你的網站地址;;你網站地址,肯定沒在官方的白名單內,所以就看不到圖片了。

不發送Referer,也就是沒有來源。那么官方那邊,就認為是從瀏覽器直接訪問的,所以就能加載正常的圖片了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM