zoukankan      html  css  js  c++  java
  • 图片防盗链

    比如百度百科的一些图片,右键复制了图片的网页地址,在<img>标签中使用该地址时,显示的图片却提示’该图片仅限百度用户内部交流使用‘。这种情况就是做了图片防盗链的处理

    图片防盗链

    ·盗链是指服务提供商自己不提供服务的内容,直接在自己的网站上向最终用户提供其他服务提供商的服务内容,在请求头有个Referer属性,查看是否域名与server的一致

    ·从一个网页跳转,或者网页引用到某个资源文件时,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>
  • 相关阅读:
    RabbitMQ系列教程之一:我们从最简单的事情开始!Hello World(转载)
    如何安装和配置RabbitMQ(转载)
    C++学习笔记-模板
    C++学习笔记-多态的实现原理
    C++学习笔记-多态的实现原理
    C++学习笔记-多态
    C++学习笔记-多态
    C++学习笔记-继承中的构造与析构
    C++学习笔记-继承
    C++学习笔记-封装
  • 原文地址:https://www.cnblogs.com/web-fengmin/p/6430126.html
Copyright © 2011-2022 走看看