91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

host、referer和origin的區別有哪些

發布時間:2021-08-13 17:29:32 來源:億速云 閱讀:258 作者:Leah 欄目:大數據

這篇文章給大家介紹host、referer和origin的區別有哪些,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

host比較容易理解,來看下MDN網站給的介紹:

Host 請求頭指明了服務器的域名(對于虛擬主機來說),以及(可選的)服務器監聽的TCP端口號。 


如果沒有給定端口號,會自動使用被請求服務的默認端口(比如請求一個HTTP的URL會自動使用80端口)。 


HTTP/1.1 的所有請求報文中必須包含一個Host頭字段。如果一個 HTTP/1.1 請求缺少 Host 頭字段或者設置了超過一個的 Host 頭字段,一個400(Bad Request)狀態碼會被返回。

從上面的文字中可以總結出如下信息:

1、host的值為客戶端請求的服務器的域名(或者ip)和端口

2、http/1.1中必須包含host請求頭,且只能設置一個;

那么host主要用在什么地方呢?

host用的最多的場景是:單臺服務器設置多個虛擬主機時。

舉個簡單的例子: 我在IP地址為127.0.0.1的服務器上,通過apache配置了兩個虛擬主機:a.com,b.com,這兩個域名通過DNS解析都會指向127.0.0.1,我在瀏覽器中訪問a.com的網站時,DNS將域名轉化為IP地址,此時可以通過客戶端請求頭的host信息判斷訪問的是服務器上對應的虛擬主機。

如圖:

host、referer和origin的區別有哪些

如果沒有host請求頭,客戶端的請求就不能標記出該訪問哪個虛擬主機了。

接著看一下MDN對referer的介紹:

Referer 首部包含了當前請求頁面的來源頁面的地址,即表示當前頁面是通過此來源頁面里的鏈接進入的。服務端一般使用 Referer 首部識別訪問來源,可能會以此進行統計分析、日志記錄以及緩存優化等。


需要注意的是 referer 實際上是 "referrer" 誤拼寫。

在以下兩種情況下,Referer 不會被發送: 

1.來源頁面采用的協議為表示本地文件的 "file" 或者 "data" URI; 

2.當前請求頁面采用的是非安全協議,而來源頁面采用的是安全協議(HTTPS)。

3.直接輸入網址或通過瀏覽器書簽訪問 

4.使用 JavaScript 的 Location.href 或者是 Location.replace()

5.使用html5中noreferrer 

<a href="/test/index.php?noreferer" rel="noreferrer" target="_blank">noreferrer</a> 
<a href="/test/index.php?noreferer" rel="noreferrer" target="_blank">noreferrer</a>

6.使用 Referer Meta 標簽控制 referer 使用場景,具體參考如下文章:https://www.jb51.net/article/137982.htm

7.使用iframe的hack寫法去除referer。

這里給大家舉一個例子,百度的圖片防盜鏈:

html代碼如下:

host、referer和origin的區別有哪些

鼠標雙擊這張網頁直接打開,也就是file協議訪問,此時是不帶referer的,圖片是顯示的,如圖:

host、referer和origin的區別有哪些

network如圖,此時沒有referer請求頭:

host、referer和origin的區別有哪些

但是我將其發布到服務器上,用http://127.0.0.1/a2.html來訪問,如圖:

host、referer和origin的區別有哪些

圖片不顯示了,為什么呢?觀察請求頭,如圖:

host、referer和origin的區別有哪些

多了一個referer的請求頭,請求頭標識了訪問這張圖片請求的源頭,請求源頭為我的網站,百度圖片服務器根據這個請求頭判斷,然后將我攔截了。

那么如何破解盜鏈呢,常用的是用一個服務器程序作為代理爬蟲,服務器爬蟲可以自由設置請求頭了,還有就是利用iframe的hack寫法了。這種寫法類似xss,那什么是xss呢?這里先不說,下期討論。

iframe去除referer的寫法如下,看代碼:

host、referer和origin的區別有哪些

顯示結果如圖:

host、referer和origin的區別有哪些

再看network如圖:

host、referer和origin的區別有哪些

referer消失了。referer消失后,跳過了百度的防盜鏈。

最后是origin了,看一年MDN對其的介紹:

請求首部字段 Origin 指示了請求來自于哪個站點。該字段僅指示服務器名稱,并不包含任何路徑信息。該首部用于 CORS 請求或者 POST 請求。除了不包含路徑信息,該字段與 Referer 首部字段相似。

可以看到referer與origin功能相似,但是還是有幾點不同,仔細看上面的介紹,總結如下幾點:

1、只有跨域請求,或者同域時發送post請求,才會攜帶origin請求頭,而referer不論何種情況下,只要瀏覽器能獲取到請求源都會攜帶,除了上面提到的幾種情況。

2、如果瀏覽器不能獲取請求源,那么origin滿足上面情況也會攜帶,不過其值為null,如圖:

host、referer和origin的區別有哪些

這點與referer不同,瀏覽器如果不能獲取請求源,那么請求頭中不會攜帶referer。

3、origin的值只包括協議、域名和端口,而erferer不但包括協議、域名、端口還包括路徑,參數,注意不包括hash值。

關于host、referer和origin的區別有哪些就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

周至县| 安徽省| 保靖县| 珲春市| 哈尔滨市| 南平市| 华安县| 平遥县| 如东县| 读书| 类乌齐县| 泾源县| 遵义县| 株洲县| 南靖县| 房产| 张家港市| 衡阳县| 潍坊市| 溆浦县| 广州市| 瑞金市| 内江市| 上蔡县| 老河口市| 营山县| 宜章县| 宜黄县| 秦皇岛市| 泽库县| 嘉鱼县| 广灵县| 隆子县| 运城市| 双牌县| 疏勒县| 孝感市| 乌什县| 多伦县| 德州市| 聂荣县|