Tsung1990
V2EX  ›  Node.js

请求头中的 Referer 可能导致 403( Forbidden)错误?

  •  
  •   Tsung1990 · Apr 29, 2015 · 6136 views
    This topic created in 4035 days ago, the information mentioned may be changed or developed.

    最近在学习过程中碰到一个问题,以localhost形式打开页面后,下面这段HTML标签无法获取远程的图片内容(403错误),但是如果直接以FILE的形式打开页面则可以获取正确的图片信息。猜测是请求头中的Referer引起的,但我对HTTP不是太熟悉,所以想请问大神是否是这个原因,另外服务器端为什么要这么作这样的限制?

    <img src="http://pic2.zhimg.com/68f9ef80e049bf3d943317f5f8700d8d.jpg" />
    

    为证实这个想法,我用了下面这段Node程序,

    var fs = require('fs'),
        http = require('http');
    
    var option = {
        host: 'pic2.zhimg.com',
        path: '/68f9ef80e049bf3d943317f5f8700d8d.jpg',
        method: 'GET',
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded',
            'Referer': "http://localhost:8080/index.html",   // 如果注释这行就没有问题
            'User-Agent': "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36"
        }
    
    };
    
    http.get(option, function (res) {
        res.pipe(fs.createWriteStream('out.jpg')).on('finish', function () {
            console.log('finish loading');
        });
    }).on('error', function (err) {
        console.error('got error', err);
    });
    
    6 replies    2015-04-29 14:57:45 +08:00
    47jm9ozp
        1
    47jm9ozp  
       Apr 29, 2015
    google 防盗链
    Arrowing
        2
    Arrowing  
       Apr 29, 2015
    防盗链+1
    Tsung1990
        3
    Tsung1990  
    OP
       Apr 29, 2015 via Android
    @ooxxcc 谢谢,涨见识了,那请问如果我需要引用相关链接有哪些途径呢?
    cevincheung
        4
    cevincheung  
       Apr 29, 2015
    @Tsung1990 需要把图片存储到本地然后再引用。
    Arrowing
        5
    Arrowing  
       Apr 29, 2015
    @Tsung1990 服务器读取远程图片,然后再显示?
    gamexg
        6
    gamexg  
       Apr 29, 2015
    [转载] 通过JS破解图片防盗链限制
    http://www.cnblogs.com/hooray/archive/2011/05/12/2044744.html

    这个方法不用服务器参与,直接用脚本即可。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   907 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 59ms · UTC 22:31 · PVG 06:31 · LAX 15:31 · JFK 18:31
    ♥ Do have faith in what you're doing.