請求後端接口時,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...