2012-07-07 60 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一些例子。