我正在尝试拦截对我的网站的相对路径引用的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('/');
}
});
});
请原谅我可怜的英语。
答案 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
};