referrer策略和meta標籤的問題

請求後端接口時,banner圖片的請求出現403錯誤:GET http://xxxxxxxxxxxx 403(Forbidden)。在網上搜尋一番,解決方法如下:在index.html中的head中添加<meta name="referrer" content="no-referrer" />。

在此之前,關於referrer,知之甚少。參考https://imququ.com/post/refer...,說是一種引用策略,可以用來防止圖片或視頻被盜。它的原理是:http 協議中,如果從一個網頁跳到另一個網頁,http 頭字段裏面會帶個 Referrer。圖片服務器通過檢測 Referrer 是否來自規定域名,來進行防盜鏈。如果沒有設置referrer,那就可以直接繞過防盜鏈機制,直接使用或盜取。

referrer 的值有哪些?

1、no-referrer:所有請求不發送 referrer。

2、no-referrer-when-downgrade(默認值):當請求安全級別下降時不發送 referrer。目前,只有一種情況會發生安全級別下降,即從 HTTPS 到 HTTP。HTTPS 到 HTTP 的資源引用和鏈接跳轉都不會發送 referrer。

3、same-origin:對於同源的鏈接和引用,會發送referrer,其他的不會。

4、origin:在任何情況下僅發送源信息作爲引用地址。源信息包括訪問協議和域名。

5、strict-origin:在安全級別下降時不發送 referrer;而在同等安全級別的情況下僅發送源信息。注意:這個是新加的標準,有些瀏覽器可能還不支持。

6、origin-when-cross-origin:同源的鏈接和引用,會發送完全的 referrer 信息;但非同源鏈接和引用時,只發送源信息。

7、strict-origin-when-cross-origin:同源的鏈接和引用,會發送 referrer。安全級別下降時不發送 referrer。其它情況下發送源信息。注意:這個是新加的標準,有些瀏覽器可能還不支持。

8、unsafe-url:無論是否發生協議降級,無論是本站鏈接還是站外鏈接,統統都發送 Referrer 信息。正如其名,這是最寬鬆而最不安全的策略。

語法

Referrer-Policy: no-referrer

Referrer Policy 的設置方法

1、CSP(Content Security Policy),是一個跟頁面內容安全有關的規範。在 HTTP 中通過響應頭中的 Content-Security-Policy 字段來告訴瀏覽器當前頁面要使用何種 CSP 策略。

 Content-Security-Policy: referrer no-referrer|no-referrer-when-downgrade|origin|origin-when-cross-origin|unsafe-url;

CSP 的指令和指令值之間以空格分割,多個指令之間用英文分號分割。

2、<meta> 標籤

<meta name="referrer" content="no-referrer|no-referrer-when-downgrade|origin|origin-when-crossorigin|unsafe-url">
 

如果 content 屬性不是合法的取值,瀏覽器會自動選擇 no-referrer 這種最嚴格的策略。

3、通過a、area、link元素的 referrer屬性

a href="http://www.baidu.com" referrer="no-referrer|origin|unsafe-url"

meta標籤的延伸

meta標籤用來描述一個HTML網頁文檔的屬性,有關頁面的元信息,主要有兩個屬性:name 和 http-equiv

1、<meta name="參數" content="具體的描述">

name屬性主要用於描述網頁,比如網頁的關鍵詞,敘述等。屬性值爲content,content中的內容是對name填入類型的具體描述,便於搜索引擎抓取。

2、name的參數

①、keywords:網頁關鍵字

<meta name="keywords" content="food, water">

②、description:網站內容的描述,網站主要內容

<meta name="description" content="Study English online">

③、viewport:移動端視口,僅供移動設備使用

<meta name="viewport" content="width=device-width, initial-scale=1">

④、robots:搜索引擎爬蟲的索引方式,content不填默認爲all

<meta name="robots" content="all|none|index|noindex|follow|nofollow">

none : 搜索引擎將忽略此網頁,等價於noindex,nofollow
noindex : 搜索引擎不索引此網頁
nofollow: 搜索引擎不繼續通過此網頁的鏈接索引搜索其它的網頁
all : 搜索引擎將索引此網頁與繼續通過此網頁的鏈接索引,等價於index,follow
index : 搜索引擎索引此網頁
follow : 搜索引擎繼續通過此網頁的鏈接索引搜索其它的網頁

⑤、author:作者

<meta name="author" content="Sheldon">

⑥、copyright:標註版權信息

<meta name="copyright" content="yixinli"> //代表該網站爲yixinli版權所有

⑦、revisit-after:搜索引擎爬蟲重訪時間

<meta name="revisit-after" content="one week" >

3、<meta http-equiv="參數" content="具體的描述">

http-equiv相當於http文件頭的作用

4、http-equiv的參數:

①、content-Type:聲明字符編碼

<meta charset="utf-8">  // H5新增,推薦使用
<meta http-equiv="content-Type" content="text/html;charset=utf-8"> //舊的HTML

②、cache-control:指定請求和響應遵循的緩存機制

<meta http-equiv="cache-control" content="no-cache">

content的值有:

no-cache: 先發送請求,與服務器確認該資源是否被更改,如果未被更改,則使用緩存
no-store: 不允許緩存,每次都要去服務器上,下載完整的響應
public : 緩存所有響應,但並非必須。因爲max-age也可以做到相同效果
private : 只爲單個用戶緩存,因此不允許任何中繼進行緩存
maxage : 表示當前請求開始,該響應在多久內能被緩存和重用,而不去服務器重新請求。例如:max-age=60表示響應可以再緩存和重用 60 秒。
no-siteapp:禁止百度自動轉碼

③、expires:網頁到期時間,到期後網頁必須到服務器上重新傳輸。

<meta http-equiv="expires" content="Sunday 26 October 2018 10:00 GMT" />

④、refresh:自動刷新並指向某頁面

<meta http-equiv="refresh" content="2; URL=http://www.sina.com/"> //意思是2秒後跳轉新浪

⑤、X-UA-Compatible:瀏覽器採取何種版本渲染當前頁面

<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> //指定IE和Chrome使用最新版本渲染當前頁面

⑥、Set-Cookie:爲頁面定義cookie

如果網頁過期,那麼這個網頁存在本地的cookies也會被自動刪除。

<meta http-equiv="Set-Cookie" content="name, date"> //格式

參考文檔:
https://imququ.com/post/refer...
https://www.jianshu.com/p/b12...
https://developer.mozilla.org...
https://developer.mozilla.org...
https://segmentfault.com/a/11...

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章