[英]Node JS image proxy
我正在尝试根据输入URL为图像创建代理。 我当前的代码已经复制了确切的一些标头,并将其返回给客户端,但是我尝试了各种方法,并且响应要么一直试图永久加载,要么说“由于包含错误,图像无法显示”。 这是我的代理:
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();
};
除非您知道自己在做什么,否则避免将二进制数据转换为字符串。 您可以改用类似的方法:
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();
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.