V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Tsung1990
V2EX  ›  Node.js

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

  •  
  •   Tsung1990 · 2015-04-29 14:30:50 +08:00 · 5410 次点击
    这是一个创建于 3503 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近在学习过程中碰到一个问题,以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 条回复    2015-04-29 14:57:45 +08:00
    ooxxcc
        1
    ooxxcc  
       2015-04-29 14:33:10 +08:00
    google 防盗链
    Arrowing
        2
    Arrowing  
       2015-04-29 14:44:30 +08:00
    防盗链+1
    Tsung1990
        3
    Tsung1990  
    OP
       2015-04-29 14:47:02 +08:00 via Android
    @ooxxcc 谢谢,涨见识了,那请问如果我需要引用相关链接有哪些途径呢?
    cevincheung
        4
    cevincheung  
       2015-04-29 14:52:46 +08:00
    @Tsung1990 需要把图片存储到本地然后再引用。
    Arrowing
        5
    Arrowing  
       2015-04-29 14:52:57 +08:00
    @Tsung1990 服务器读取远程图片,然后再显示?
    gamexg
        6
    gamexg  
       2015-04-29 14:57:45 +08:00
    [转载] 通过JS破解图片防盗链限制
    http://www.cnblogs.com/hooray/archive/2011/05/12/2044744.html

    这个方法不用服务器参与,直接用脚本即可。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2802 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 07:22 · PVG 15:22 · LAX 23:22 · JFK 02:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.