1.請(qǐng)求頭Referer
Referer請(qǐng)求頭的值是發(fā)送請(qǐng)求的超鏈接所屬頁面的URL。下面通過一個(gè)案例來詳細(xì)了解Referer請(qǐng)求頭,代碼詳情請(qǐng)參考
防盜鏈之代碼詳解。
- 創(chuàng)建一個(gè)web應(yīng)用Example06,在該應(yīng)用的index.jsp頁面中,添加一個(gè)超鏈接,主要代碼如例1-1所示:
例1-1 index.jsp
由例1-1可知,index.jsp頁面中的超鏈接所連接的地址是Example04,也就是說當(dāng)點(diǎn)擊該超鏈接訪問的是Example04的index.jsp頁面。
(2)將Example06以及Example04發(fā)布到Tomcat服務(wù)器中,然后啟動(dòng)Tocmat服務(wù)器,最后在瀏覽器端地址欄上輸入http://localhost:8080/Example06,瀏覽器顯示結(jié)果如圖1-1所示:
圖1-1 運(yùn)行結(jié)果
(3)點(diǎn)擊圖1-1所示中的【點(diǎn)擊去Example04】超鏈接,并使用HttpWatch工具進(jìn)行抓包,如圖1-2所示:
圖1-2 運(yùn)行結(jié)果
通過HttpWatch抓包后,得到請(qǐng)求信息,具體內(nèi)容如例1-2所下:
例1-1 請(qǐng)求信息
我們可以發(fā)現(xiàn)Referer請(qǐng)求頭的值為:
http://localhost:8080/Example06/,我們是從Exmple06項(xiàng)目的index.jsp頁面跳轉(zhuǎn)到Example04的index.jsp頁面,而Example06的index.jsp頁面的URL也確實(shí)是http://localhost:8080/Example06。
2.什么是盜鏈
假設(shè)一個(gè)網(wǎng)站的首頁中想顯示一些圖片信息,而該網(wǎng)站的服務(wù)器中并沒有這些圖片資源,它就通過在Html文件或jsp文件中使用img標(biāo)簽鏈接到其他網(wǎng)站的圖片資源,將其展示給瀏覽者,這就是盜鏈。
在本網(wǎng)站中,對(duì)所有請(qǐng)求都進(jìn)行判斷請(qǐng)求信息中Referer請(qǐng)求頭的值是否是本站的url,如果不是可以阻止其訪問或跳轉(zhuǎn)到指定的頁面。
使用Referer請(qǐng)求頭要注意以下兩點(diǎn):
- 如果是在瀏覽器地址欄上直接訪問,那么請(qǐng)求信息中就沒有Referer請(qǐng)求頭。
- 如果在頁面中點(diǎn)擊超鏈接或者提交表單,請(qǐng)求信息中存在Referer請(qǐng)求頭。
Referer請(qǐng)求頭有以下兩個(gè)用途:
3.Content-Type請(qǐng)求頭
在
HTTP響應(yīng)協(xié)議中,我們講解的響應(yīng)頭中提到過Content-Type。請(qǐng)求頭中也有一個(gè)請(qǐng)求頭名字為Content-Type,但是它們是不一樣的。
Content-Type請(qǐng)求頭是瀏覽器告訴服務(wù)器,請(qǐng)求體的類型。對(duì)于Get請(qǐng)求來說,它是沒有請(qǐng)求體的,所以Gontent-Type請(qǐng)求頭在GET方式的請(qǐng)求信息中是不存在的。它的默認(rèn)值是application/x-www-form/urlencoded,表示請(qǐng)求體內(nèi)容會(huì)經(jīng)過URL編碼。
4.Content-Length請(qǐng)求頭
Content-Length請(qǐng)求頭的值是請(qǐng)求體的字節(jié)數(shù)。對(duì)于請(qǐng)求方式是GET請(qǐng)求的請(qǐng)求信息中是不存在這個(gè)請(qǐng)求頭的。
本文版權(quán)歸傳智播客Java培訓(xùn)學(xué)院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)注明作者出處。謝謝!
作者:傳智播客Java培訓(xùn)學(xué)院
首發(fā):http://xamj520.com/javaee