host、referer和origin的區(qū)別有哪些

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

創(chuàng)新互聯(lián)是專業(yè)的宜城網(wǎng)站建設(shè)公司,宜城接單;提供成都做網(wǎng)站、成都網(wǎng)站建設(shè)、成都外貿(mào)網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行宜城網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!

host比較容易理解,來(lái)看下MDN網(wǎng)站給的介紹:

Host 請(qǐng)求頭指明了服務(wù)器的域名(對(duì)于虛擬主機(jī)來(lái)說(shuō)),以及(可選的)服務(wù)器監(jiān)聽(tīng)的TCP端口號(hào)。 

如果沒(méi)有給定端口號(hào),會(huì)自動(dòng)使用被請(qǐng)求服務(wù)的默認(rèn)端口(比如請(qǐng)求一個(gè)HTTP的URL會(huì)自動(dòng)使用80端口)。 

HTTP/1.1 的所有請(qǐng)求報(bào)文中必須包含一個(gè)Host頭字段。如果一個(gè) HTTP/1.1 請(qǐng)求缺少 Host 頭字段或者設(shè)置了超過(guò)一個(gè)的 Host 頭字段,一個(gè)400(Bad Request)狀態(tài)碼會(huì)被返回。

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

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

2、http/1.1中必須包含host請(qǐng)求頭,且只能設(shè)置一個(gè);

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

host用的最多的場(chǎng)景是:?jiǎn)闻_(tái)服務(wù)器設(shè)置多個(gè)虛擬主機(jī)時(shí)。

舉個(gè)簡(jiǎn)單的例子: 我在IP地址為127.0.0.1的服務(wù)器上,通過(guò)apache配置了兩個(gè)虛擬主機(jī):a.com,b.com,這兩個(gè)域名通過(guò)DNS解析都會(huì)指向127.0.0.1,我在瀏覽器中訪問(wèn)a.com的網(wǎng)站時(shí),DNS將域名轉(zhuǎn)化為IP地址,此時(shí)可以通過(guò)客戶端請(qǐng)求頭的host信息判斷訪問(wèn)的是服務(wù)器上對(duì)應(yīng)的虛擬主機(jī)。

如圖:

host、referer和origin的區(qū)別有哪些

如果沒(méi)有host請(qǐng)求頭,客戶端的請(qǐng)求就不能標(biāo)記出該訪問(wèn)哪個(gè)虛擬主機(jī)了。

接著看一下MDN對(duì)referer的介紹:

Referer 首部包含了當(dāng)前請(qǐng)求頁(yè)面的來(lái)源頁(yè)面的地址,即表示當(dāng)前頁(yè)面是通過(guò)此來(lái)源頁(yè)面里的鏈接進(jìn)入的。服務(wù)端一般使用 Referer 首部識(shí)別訪問(wèn)來(lái)源,可能會(huì)以此進(jìn)行統(tǒng)計(jì)分析、日志記錄以及緩存優(yōu)化等。

需要注意的是 referer 實(shí)際上是 "referrer" 誤拼寫(xiě)。

在以下兩種情況下,Referer 不會(huì)被發(fā)送: 

1.來(lái)源頁(yè)面采用的協(xié)議為表示本地文件的 "file" 或者 "data" URI; 

2.當(dāng)前請(qǐng)求頁(yè)面采用的是非安全協(xié)議,而來(lái)源頁(yè)面采用的是安全協(xié)議(HTTPS)。

3.直接輸入網(wǎng)址或通過(guò)瀏覽器書(shū)簽訪問(wèn) 

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 標(biāo)簽控制 referer 使用場(chǎng)景,具體參考如下文章:https://www.jb51.net/article/137982.htm

7.使用iframe的hack寫(xiě)法去除referer。

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

html代碼如下:

host、referer和origin的區(qū)別有哪些

鼠標(biāo)雙擊這張網(wǎng)頁(yè)直接打開(kāi),也就是file協(xié)議訪問(wèn),此時(shí)是不帶referer的,圖片是顯示的,如圖:

host、referer和origin的區(qū)別有哪些

network如圖,此時(shí)沒(méi)有referer請(qǐng)求頭:

host、referer和origin的區(qū)別有哪些

但是我將其發(fā)布到服務(wù)器上,用http://127.0.0.1/a2.html來(lái)訪問(wèn)

圖片不顯示了,為什么呢?觀察請(qǐng)求頭

多了一個(gè)referer的請(qǐng)求頭,請(qǐng)求頭標(biāo)識(shí)了訪問(wèn)這張圖片請(qǐng)求的源頭,請(qǐng)求源頭為我的網(wǎng)站,百度圖片服務(wù)器根據(jù)這個(gè)請(qǐng)求頭判斷,然后將我攔截了。

那么如何破解盜鏈呢,常用的是用一個(gè)服務(wù)器程序作為代理爬蟲(chóng),服務(wù)器爬蟲(chóng)可以自由設(shè)置請(qǐng)求頭了,還有就是利用iframe的hack寫(xiě)法了。這種寫(xiě)法類似xss,那什么是xss呢?這里先不說(shuō),下期討論。

iframe去除referer的寫(xiě)法如下,看代碼:

host、referer和origin的區(qū)別有哪些

顯示結(jié)果如圖:

host、referer和origin的區(qū)別有哪些

再看network如圖:

host、referer和origin的區(qū)別有哪些

referer消失了。referer消失后,跳過(guò)了百度的防盜鏈。

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

請(qǐng)求首部字段 Origin 指示了請(qǐng)求來(lái)自于哪個(gè)站點(diǎn)。該字段僅指示服務(wù)器名稱,并不包含任何路徑信息。該首部用于 CORS 請(qǐng)求或者 POST 請(qǐng)求。除了不包含路徑信息,該字段與 Referer 首部字段相似。

可以看到referer與origin功能相似,但是還是有幾點(diǎn)不同,仔細(xì)看上面的介紹,總結(jié)如下幾點(diǎn):

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

2、如果瀏覽器不能獲取請(qǐng)求源,那么origin滿足上面情況也會(huì)攜帶,不過(guò)其值為null,如圖:

host、referer和origin的區(qū)別有哪些

這點(diǎn)與referer不同,瀏覽器如果不能獲取請(qǐng)求源,那么請(qǐng)求頭中不會(huì)攜帶referer。

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

關(guān)于host、referer和origin的區(qū)別有哪些就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

網(wǎng)站名稱:host、referer和origin的區(qū)別有哪些
文章出自:http://muchs.cn/article34/ihdcpe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、網(wǎng)站導(dǎo)航、微信公眾號(hào)、營(yíng)銷型網(wǎng)站建設(shè)面包屑導(dǎo)航、域名注冊(cè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化