2016-01-27 77 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