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

How to return image in NodeJS after intercepted image get request?

我正在尝试拦截对 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”,但即使我可以看到响应 headers 属性与所需文件匹配,我也总是会收到错误消息。

使用此代码:

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

请原谅我糟糕的英语。

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

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