1

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

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

拦截检索“ http://my2website.com/main/mainscript.js ”,工作正常

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

拦截以检索“ http://my2website.com/images/logo.png ”,但即使我可以看到响应标头属性与所需文件匹配,我总是会收到错误消息。

使用此代码:

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('/');
    }
  });
});

请原谅我糟糕的英语。

4

1 回答 1

2

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

  var options = {
    url: 'http://my2website.com'+ req.path,
    headers: {
        'User-Agent': req.headers['user-agent']
    },
    encoding: null
  };
于 2015-08-12T22:24:07.397 回答