JavaScript 防盜鏈的原理以及破解方法
HTTP Referer是header的一部分, 當(dāng)瀏覽器向web服務(wù)器發(fā)送請求的時(shí)候,一般會(huì)帶上Referer,告訴服務(wù)器我是從哪個(gè)頁面鏈接過來的,服務(wù)器藉此可以獲得一些信息用于處理。通過該頭域的值,我們可以檢測到訪問目標(biāo)資源的源地址
背景
前段日子 在自學(xué)做項(xiàng)目的時(shí)候發(fā)現(xiàn) 明明在項(xiàng)目中引用了線上存在的圖片 但是在自己的項(xiàng)目中卻怎么也顯示出來
查閱資料后發(fā)現(xiàn)是這些第三方網(wǎng)站設(shè)置了防盜鏈
破解防盜鏈
先說說防盜鏈的原理,http 協(xié)議中,如果從一個(gè)網(wǎng)頁跳到另一個(gè)網(wǎng)頁,http 頭字段里面會(huì)帶個(gè) Referer。
這里的Referer是由于歷史原因?qū)е铝似磳戝e(cuò)誤 后來也就一直沿用。
圖片服務(wù)器通過檢測 Referer 是否來自規(guī)定域名,來進(jìn)行防盜鏈。
如果盜用網(wǎng)站是 https 的 protocol,而圖片鏈接是 http 的話,
則從 https 向 http 發(fā)起的請求會(huì)因?yàn)榘踩缘囊?guī)定,而不帶 referer,從而實(shí)現(xiàn)防盜鏈的繞過。
官方輸出圖片的時(shí)候,判斷了來源(Referer),就是從哪個(gè)網(wǎng)站訪問這個(gè)圖片,
如果是你的網(wǎng)站去加載這個(gè)圖片,那么Referer就是:你的網(wǎng)站地址;
你網(wǎng)站地址,肯定沒在官方的白名單內(nèi),所以就看不到圖片了。
因此,若不發(fā)送Referer,也就是沒有來源。那么官方那邊,就認(rèn)為是從瀏覽器直接訪問的,所以就能加載正常的圖片了。
<meta name="referrer" content="never">
比如在掘金上 查看我的一篇文章中一張圖片的Request Headers 就可以看到Referer

以上就是JavaScript 防盜鏈的原理以及破解方法的詳細(xì)內(nèi)容,更多關(guān)于JavaScript 防盜鏈的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
動(dòng)態(tài)的創(chuàng)建一個(gè)元素createElement及刪除一個(gè)元素
本文用示例為大家介紹下動(dòng)態(tài)創(chuàng)建一個(gè)元素createElement及刪除一個(gè)元素,感興趣的朋友可以參考下2014-01-01
分享兩個(gè)手機(jī)訪問pc網(wǎng)站自動(dòng)跳轉(zhuǎn)手機(jī)端網(wǎng)站代碼
這篇文章主要介紹了分享兩個(gè)手機(jī)訪問pc網(wǎng)站自動(dòng)跳轉(zhuǎn)手機(jī)端網(wǎng)站代碼,需要的朋友可以參考下2015-01-01
微信小程序?qū)崿F(xiàn)watch監(jiān)聽
這篇文章主要介紹了微信小程序?qū)崿F(xiàn)watch監(jiān)聽,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06
ExtJs使用自定義插件動(dòng)態(tài)保存表頭配置(隱藏或顯示)
這篇文章主要介紹了ExtJs使用自定義插件動(dòng)態(tài)保存表頭配置(隱藏或顯示) ,需要的朋友可以參考下2018-09-09
JavaScript中SetInterval與setTimeout的用法詳解
在寫H5游戲時(shí)經(jīng)常需要使用定時(shí)刷新頁面實(shí)現(xiàn)動(dòng)畫效果,比較常用即setTimeout()以及setInterval(),但是大家對SetInterval與setTimeout的用法了解嗎,下面通過本文給大家詳解js中SetInterval與setTimeout的用法,需要的朋友參考下2015-11-11

