如何在拦截图像获取请求后在 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
};
我正在尝试拦截对 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
};