Referer??是?HTTP??請(qǐng)求header的一部分泥从,當(dāng)瀏覽器(或者模擬瀏覽器行為)向web服務(wù)器發(fā)送請(qǐng)求的時(shí)候恍涂,頭信息里有包含?Referer??桶唐。比如我在www.google.com?里有一個(gè)www.baidu.com?鏈接族沃,那么點(diǎn)擊這個(gè)www.baidu.com?,它的header?信息里就有:
????Referer=http://www.google.com
由此可以看出來(lái)吧旋炒。它就是表示一個(gè)來(lái)源∏╄荆看下圖的一個(gè)請(qǐng)求的?Referer??信息瘫镇。
這里有一個(gè)小問題要說(shuō)明下。
Referer??的正確英語(yǔ)拼法是referrer答姥。由于早期HTTP規(guī)范的拼寫錯(cuò)誤铣除,為了保持向后兼容就將錯(cuò)就錯(cuò)了。其它網(wǎng)絡(luò)技術(shù)的規(guī)范企圖修正此問題鹦付,使用正確拼法尚粘,所以目前拼法不統(tǒng)一。還有它第一個(gè)字母是大寫敲长。
Referer的作用郎嫁?
0.頁(yè)面統(tǒng)計(jì)?
( 什么是盜鏈呢?假設(shè)一個(gè)網(wǎng)站的首頁(yè)中想顯示一些圖片信息祈噪,而在該網(wǎng)站的服務(wù)器中并沒有這些圖片資源泽铛,它通過(guò)在HTML文件中使用img標(biāo)記鏈接到其他網(wǎng)站的圖片資源,將其展示給瀏覽者辑鲤,這就是盜鏈盔腔。盜鏈的網(wǎng)站提高了自己的訪問量,卻加重了被鏈接網(wǎng)站服務(wù)器的負(fù)擔(dān),損害了其合法利益弛随。所以瓢喉,一個(gè)網(wǎng)站為了保護(hù)自己的資源,可以通過(guò)Referer頭檢測(cè)出從哪里鏈接到當(dāng)前的網(wǎng)頁(yè)或資源舀透,一旦檢測(cè)到不是通過(guò)本站的鏈接進(jìn)行的訪問栓票,可以進(jìn)行阻止訪問或者跳轉(zhuǎn)到指定的頁(yè)面。)
1.防盜鏈盐杂。
剛剛前面有提到一個(gè)小?Demo??逗载。
我在www.google.com里有一個(gè)www.baidu.com鏈接,那么點(diǎn)擊這個(gè)www.baidu.com链烈,它的header信息里就有:
那么可以利用這個(gè)來(lái)防止盜鏈了厉斟,比如我只允許我自己的網(wǎng)站訪問我自己的圖片服務(wù)器,那我的域名是www.google.com强衡,那么圖片服務(wù)器每次取到Referer來(lái)判斷一下是不是我自己的域名www.google.com擦秽,如果是就繼續(xù)訪問,不是就攔截漩勤。
這是不是就達(dá)到防盜鏈的效果了感挥?
將這個(gè)http請(qǐng)求發(fā)給服務(wù)器后,如果服務(wù)器要求必須是某個(gè)地址或者某幾個(gè)地址才能訪問越败,而你發(fā)送的referer不符合他的要求触幼,就會(huì)攔截或者跳轉(zhuǎn)到他要求的地址,然后再通過(guò)這個(gè)地址進(jìn)行訪問究飞。
2.防止惡意請(qǐng)求置谦。
比如靜態(tài)請(qǐng)求是*.html結(jié)尾的,動(dòng)態(tài)請(qǐng)求是*.shtml亿傅,那么由此可以這么用媒峡,所有的*.shtml請(qǐng)求,必須?Referer??為我自己的網(wǎng)站。
空Referer是怎么回事?什么情況下會(huì)出現(xiàn)Referer?
首先慧脱,我們對(duì)空?Referer??的定義為,?Referer??頭部的內(nèi)容為空签餐,或者,一個(gè)?HTTP??請(qǐng)求中根本不包含?Referer??頭部盯串。
那么什么時(shí)候?HTTP??請(qǐng)求會(huì)不包含?Referer??字段呢贱田?根據(jù)Referer的定義,它的作用是指示一個(gè)請(qǐng)求是從哪里鏈接過(guò)來(lái)嘴脾,那么當(dāng)一個(gè)請(qǐng)求并不是由鏈接觸發(fā)產(chǎn)生的男摧,那么自然也就不需要指定這個(gè)請(qǐng)求的鏈接來(lái)源蔬墩。
比如,直接在瀏覽器的地址欄中輸入一個(gè)資源的URL地址耗拓,那么這種請(qǐng)求是不會(huì)包含?Referer??字段的拇颅,因?yàn)檫@是一個(gè)“憑空產(chǎn)生”的?HTTP??請(qǐng)求,并不是從一個(gè)地方鏈接過(guò)去的乔询。
那么在防盜鏈設(shè)置中樟插,允許空Referer和不允許空Referer有什么區(qū)別?
允許?Referer??為空竿刁,意味著你允許比如瀏覽器直接訪問黄锤,就是空。
空的情形