拦截图像获取请求后如何在NodeJS中返回图像?

时间:2015-08-12 22:05:08

标签: node.js express requestjs

我正在尝试拦截对我的网站的相对路径引用的html元素(如图像和脚本)的请求,并使用requestJS从NodeJS从第二个网站检索它们,这适用于脚本,但我可以找不到检索图像的方法 例如在我的主页.html(127.0.0.1:3030)我有:

<script src="/main/mainscript.js"></script>

拦截以检索&#34; http://my2website.com/main/mainscript.js&#34;,正常工作

<img src=”/images/logo.png”/>

拦截以检索&#34; http://my2website.com/images/logo.png&#34;,但即使我看到响应标头属性与所需文件匹配,我也总是收到错误。

使用此代码:

app.get('*', function (req, res) {
  var options = {
    url: 'http://my2website.com'+ req.path,
    headers: {
        'User-Agent': req.headers['user-agent']
    }
  };
  request(options, function (error, response, body) {
    if (!error && response.statusCode == 200) {
        res.send(body);
    }
    else {
        console.log('request error: ' + JSON.stringify(error));
        res.redirect('/');
    }
  });
});

请原谅我可怜的英语。

1 个答案:

答案 0 :(得分:1)

encoding: null中设置options。通过将响应保持为Buffer实例而不是将其转换为UTF-8字符串,这将保持二进制数据的完整性:

  var options = {
    url: 'http://my2website.com'+ req.path,
    headers: {
        'User-Agent': req.headers['user-agent']
    },
    encoding: null
  };