我有一个运行良好的代理(据我所知)直到我尝试代理图像(或者可能是任何二进制数据?)。根据我的估计,下面的代码应该工作,但事实并非如此。我确信我做的事情显然是愚蠢的,但我一直在挖掘论坛和apis,我还没有找到正确的方法。
我的代理的'核心'看起来如下所示。
function(req, res) {
...
options = {
url: 'a url',
headers: {
'Authorization': auth
}
};
request(options,
function(e, r, b){
var encoding = (r.headers['content-type'].indexOf('image') === -1) ? 'utf8' : 'binary';
res.writeHead(200, {
'Content-Length': r.headers['content-length'],
'Content-Type': r.headers['content-type']
});
if (encoding === 'binary') {
b = new Buffer(b);
}
res.end(b, encoding);
});
}
我在这里缺少什么?
提前感谢您提供的任何帮助!
答案 0 :(得分:2)
我的问题不在于响应(因为我最初),而是请求模块默认将其响应主体编码为unicode,当禁用(encoding: null
)时,响应主体被转换到一个容易被响应消耗的缓冲区。
options = {
url: url,
encoding: null,
headers: {
'Authorization': auth
}
};
request(options,
function(e, r, b){
var encoding = (r.headers['content-type'].indexOf('image') === -1) ? 'utf8' : 'binary';
res.end(b, encoding);
});