圖片防盜鏈

好比百度百科的一些圖片,右鍵複製了圖片的網頁地址,在<img>標籤中使用該地址時,顯示的圖片卻提示’該圖片僅限百度用戶內部交流使用‘。這種狀況就是作了圖片防盜鏈的處理html

圖片防盜鏈node

·盜鏈是指服務提供商本身不提供服務的內容,直接在本身的網站上向最終用戶提供其餘服務提供商的服務內容,在請求頭有個Referer屬性,查看是否域名與server的一致express

·從一個網頁跳轉,或者網頁引用到某個資源文件時,HTTP請求中帶有referer表示來源網頁的url瀏覽器

·用瀏覽器直接訪問圖片網址時沒有referer服務器

/** * 圖片防盜鏈 * Referer:http://localhost:63342/node201509/20.express_ext/img.html */
var express = require('express'); var path = require('path'); var app = express(); //判斷用戶是否有權限訪問此圖片
app.use('/img',function(req,res,next){ var whitelist = ['b.zf.cn'];//設置白名單,容許 哪些主機過來請求
    var referrer = req.headers.referer; console.log(referrer); if(!referrer) return next(); var referHost = require('url').parse(referrer).host.split(':')[0]; if(referHost === req.host ||  whitelist.indexOf(referHost)!=-1){ return next(); } res.sendFile(path.join(__dirname,'img','wrong.jpg')); }); app.use(express.static(__dirname)); //返回HTML
app.get('/',function(req,res){ res.sendFile(path.join(__dirname,'img.html')); }); app.listen(8080);

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
本服務器訪問
<img src="/img/baidu.png" alt="">
<br/>
a.zf.cn服務器訪問
<img src="http://a.zf.cn:8080/img/baidu.png" alt="">
<br/>
b.zf.cn服務器訪問
<img src="http://b.zf.cn:8080/img/baidu.png" alt="">
</body>
</html>
相關文章
相關標籤/搜索