节点JS图像代理

我想创build一个基于inputurl的图像代理。 我目前的代码有它复制确切的一些头,并将其返回给客户端,但我已经尝试了各种方式,并反应要么不断试图永久加载,或者说“图像无法显示,因为它包含错误”。 这是我的代理人:

var http = require('http'), url = require('url'); exports.show = function (req, res, next) { var url_parts = url.parse(req.url, true); var query = url_parts.query; var options = { host: "api.com", path: "/dgtf/20080303201247771409000000.jpg" }; var callback = function(response) { var completeResponse = ''; response.on('data', function (chunk) { completeResponse += chunk; }); response.on('end', function() { res.writeHead(200, {'Content-Type': response.headers['content-type'], 'Content-Length': response.headers['content-length'] }); res.end(completeResponse, 'binary'); }); }; http.request(options, callback).end(); }; 

避免将二进制数据转换为string,除非您知道自己在做什么。 你可以尝试像这样:

 var http = require('http'), url = require('url'); exports.show = function (req, res, next) { var url_parts = url.parse(req.url, true); var query = url_parts.query; var options = { host: "api.com", path: "/dgtf/20080303201247771409000000.jpg" }; var callback = function(response) { if (response.statusCode === 200) { res.writeHead(200, { 'Content-Type': response.headers['content-type'] }); response.pipe(res); } else { res.writeHead(response.statusCode); res.end(); } }; http.request(options, callback).end(); };