2016-01-27 73 views
0

我在Windows 7上使用nodejs。我遇到了奇怪的行爲。始終提供相同響應的同一個https請求大部分時間都沒有被節點接收,而總是通過網絡瀏覽器接收。nodejs未收到https響應

的代碼非常簡單:

var url1 = 'https:<my url>' 
require('request').get(url1).pipe(process.stdout) 

的反應實際上是一個分塊的響應,這是一個很大的JSON對象。

如果我在瀏覽器上嘗試這個請求,我總是收到anwser。 如果我使用節點請求模塊(我也嘗試使用https),則正文大部分時間都是空的。但有時會返回。

我接收狀態200和響應頭:

{ 'content-type': 'application/json', 
    connection: 'close', 
    'transfer-encoding': 'chunked', 
    date: 'Wed, 27 Jan 2016 21:01:59 GMT', 
    server: 'My Server' } 

任何想法?

+0

也許是管道問題。那麼: 'var util = require('util'); ('Err:'+ util.inspect(err)); \t console.log('Response:'+ util.inspect(res) ); });' – Dzenly

+0

不是管道問題。正如你所建議的那樣,我嘗試着不使用任何管道代碼。同樣的問題。沒有錯誤。狀態200,但正文爲空。 –

+0

我剛剛發現,如果我明確地設置頭'連接':'保持活着'它的作品。 –

回答

0

我發現2個解決方案來解決這個問題:

1)組信頭 '連接': '保活'

var opts = { url: 'my url', headers :{ 'Connection':'keep-alive'} } 
request(opts).pipe(..) 

2)設置爲true keepalive選項中https.globalAgent

https.globalAgent.keepAlive=true