<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                [TOC] ## referer是什么 下圖直觀感受,(づ ̄ 3 ̄)づ ![](https://box.kancloud.cn/1b561a8f68b850fcefe18713038e5ee7_175x106.png) ![](https://box.kancloud.cn/9d89e7836dba4fa4c40724b8a13341a2_434x166.png) 直接在瀏覽器中輸入url地址來**直接訪問**圖片/js/css等資源時是沒有referer的, 如果有referer說明是引用過來的,要么是從HTML頁面,要么是通過css @import,再或則通過background(url)引用。 ## 獲取reffer ``` console.log(req.headers['referer']); //必須小寫 ``` ### 注意事項 - 關鍵字必須小寫 - 舊瀏覽器中關鍵字為`refer`而不是`referer` ## 應用:reffer防盜鏈 ### 設計思路 我們能通過對比`req.headers['referer']`和`req.url`中的localhost來確認資源請求是否是別的站點發來的。 接著知道了資源請求的來源,我們就能通過一系列手段來決定是否響應請求以及怎樣響應。 通常的做法是設置一個白名單,在白名單內的請求我們就響應,否則就不響應。 ### 源碼 ``` let http = require('http'); let fs = require('fs'); let url = require('url'); let path = require('path'); const whiteList = [ 'localhost:8080' // ,'192.168.0.22' ]; let server = http.createServer(function(req,res){ let refer = req.headers['referer']||req.headers['refer']; if(refer){ let referHostName = url.parse(refer,true).host; let currentHostName = url.parse(req.url,true).host; if(referHostName != currentHostName && whiteList.indexOf(referHostName) == -1){ res.setHeader('Content-Type','text/html;charset=utf-8'); res.end('你娃娃居然盜鏈!'); //因為是圖片資源請求,這里這樣返回文字是無效的 return ; } } res.setHeader('Content-Type','image/png'); fs.createReadStream(path.join(__dirname,'2.jpg')).pipe(res); }).listen(9999); ``` >[info] Tip: indexOf是字符串和數組中的方法,arr/string.indexOf,so雖然是of但其實是范圍在前。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看