2012-07-07 55 views
0

我正在使用节点创建一个小型icloud客户端,以便我可以拉下一些数据并对其进行分析。我目前正在编写登录序列的脚本。当我收到响应时,头文件很好,我期望的会话cookie在那里,但应该是JSON的响应体看起来是加密的,它甚至不是纯文本。这是通过SSL,但如果头可读,不应该身体好?有我缺少一个设置或,我使用的是最新的节点中的错误,0.8.1NodeJS加密HTTPS响应正文

{ date: 'Sat, 07 Jul 2012 14:51:56 GMT', 
'x-apple-request-uuid': '............', 
'x-responding-instance': '...........', 
'cache-control': 'no-cache, no-store, private', 
'access-control-allow-origin': 'https://www.icloud.com', 
'access-control-allow-credentials': 'true', 
'set-cookie': [........], 
'content-type': 'application/json; charset=UTF-8', 
'content-encoding': 'gzip', 
'content-length': '126' } 
���������VJ-*�/R�R 
K��LI,IUJ-,M-.Q��U��,.��KW��u�q� 
wur 
�� 
��v�SH����LU�Q��+.I�KN�bhldijiaaf/.MNN-.V�JK�)N��$���l��� 
+0

就是这样,它是gzip,只需在响应主体上使用zlip.gunzip()即可。谢谢! – 2012-07-07 18:14:38

回答

3

按照响应头content-encoding: gzip,响应是不加密的,它只是压缩。您可以使用Node的zlib模块对其进行实时解压缩。下面是使用我的博客主页作为终点为例(因为我的服务器用gzip压缩的数据响应时问):

http = require('http'); 
zlib = require('zlib'); 
url = require('url'); 

var uri = url.parse("http://brandontilley.com/"); 
uri.headers = {'accept-encoding': 'gzip'}; 

var request = http.get(uri, function(res) { 
    var buffers = []; 
    res.pipe(zlib.createGunzip()).on('data', function(chunk) { 
    buffers.push(chunk); 
    }).on('end', function() { 
    console.log(Buffer.concat(buffers).toString()); 
    }); 
}); 
request.end(); 

上有Node.js documentation for the zlib module一些例子。