图片防盗链

好比百度百科的一些图片,右键复制了图片的网页地址,在<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>
相关文章
相关标签/搜索