referrer策略和meta標籤的問題

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

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

referrer 的值有哪些?

一、no-referrer:全部請求不發送 referrer。segmentfault

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

三、same-origin:對於同源的連接和引用,會發送referrer,其餘的不會。瀏覽器

四、origin:在任何狀況下僅發送源信息做爲引用地址。源信息包括訪問協議和域名。緩存

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

六、origin-when-cross-origin:同源的連接和引用,會發送徹底的 referrer 信息;但非同源連接和引用時,只發送源信息。服務器

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

八、unsafe-url:不管是否發生協議降級,不管是本站連接仍是站外連接,通通都發送 Referrer 信息。正如其名,這是最寬鬆而最不安全的策略。app

語法

Referrer-Policy: no-referrer

Referrer Policy 的設置方法

一、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 的指令和指令值之間以空格分割,多個指令之間用英文分號分割。

二、<meta> 標籤

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

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

三、經過a、area、link元素的 referrer屬性

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

meta標籤的延伸

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

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

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

二、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" >

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

http-equiv至關於http文件頭的做用

四、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...

相關文章
相關標籤/搜索