如何使用节点请求从另一个域获取json文件?

我有一个在远程服务器的JSON文件。 <domainName>/info.json 。 当我导航到我得到的url:

 { "version": "1.8 RC05" } 

但是,当我从我的terminalcurl <domainname>/info.json ,我得到如下所示:

  T*K-* RP2Գr60Uk % c9@ 

当我使用节点request如下:

 app.get('/', function(req,res){ request.get('<domainname>/info.json').on('response', function(data){ data = data.setEncoding('utf8'); console.log(data.statusCode); res.json(data); }); }); 

我得到以下回应:

  { "statusCode": 200, "headers": { "content-type": "application\/json; charset=utf-8", "content-length": "46", "connection": "close", "date": "Tue, 22 Sep 2015 09:56:22 GMT", "content-encoding": "gzip", "cache-control": "max-age=1800, public", "last-modified": "Mon, 21 Sep 2015 09:57:35 GMT", "etag": "\"93934d435cecbf8f5bde8627903587a0\"", "server": "AmazonS3", "age": "903", "x-cache": "Hit from cloudfront", "via": "1.1 44e39d55d481d0cc2faa76f70b7a556b.cloudfront.net (CloudFront)", "x-amz-cf-id": "eOy_rb3vasUnhb9bvvKI3AZvcvXAzJeJCI3TmK94ZlaxHu1XwBKzGg==" }, "request": { "uri": { "protocol": "https:", "slashes": true, "auth": null, "host": "<domainname>", "port": 443, "hostname": "<domainname>", "hash": null, "search": null, "query": null, "pathname": "\/info.json", "path": "\/info.json", "href": "<domainname>\/info.json" }, "method": "GET", "headers": { } } } 

我认为它必须做一些charset=utf-8 ,但不知道如何进行。 如何让我的节点应用程序获取第一个json对象并提供服务?

编辑1

正如我在答复中所build议的那样,我的立场如下:

 app.get('/', function(req,res){ request('<domainname>/info.json', function (error, response, body) { if (!error && response.statusCode == 200) { console.log(body) } }); }); 

现在我得到以下回应:

 "\u001f \b\u0000\u0000\u0000\u0000\u0000\u0000\u0003   T*K-*   S RP2ԳP\br60U  \u0005\u0000k % \u001a\u0000\u0000\u0000" 

请参阅节点请求文档 。

你可能想要发送的body ,而不是整个的response

 app.get('/', function(req,res){ request('<domainname>/info.json', function (error, response, body) { if (!error && response.statusCode == 200) { console.log(body) } }) }); 

你也可能想要gzip /解压缩响应。

为此,您可以使用Nodes Zlib实现

你可以在这里看到它的使用exmaple我如何ungzip(解压缩)一个NodeJS请求的模块gzip响应正文?