GET请求在node.js不起作用

我有很大的麻烦,通过Node.js加载页面。 这是我的Node.js应用程序的代码,请注意,如果我尝试加载其他资源(如www.google.com),因此问题是特定于域名www.egopay.com它的作品:

var http = require('http'); var options = { hostname: 'www.egopay.com', port: 80, path: '/', method: 'GET' }; var req = http.request(options, function(res) { console.log('STATUS: ' + res.statusCode); console.log('HEADERS: ' + JSON.stringify(res.headers)); res.setEncoding('utf8'); res.on('data', function (chunk) { console.log('BODY: ' + chunk); }); }); req.on('error', function(e) { console.log('problem with request: ' + e.message); }); // write data to request body req.write('data\n'); req.write('data\n'); req.end(); 

使用cURL它的作品,Node.js不会。

请求之后大约一分钟,这个错误显示出来:

 problem with request: read ECONNRESET 

当我提出同样的请求,但是在头文件中添加了一个用户代理时,我收到了一个回应,明确了发生了什么事情。 尝试添加此行到您的选项:

 headers: {'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.62 Safari/537.36'}, 

基本上,他们有一个nginx服务器,可以将您redirect到具有相同URL的HTTPS站点。 没有包含用户代理的情况下没有得到响应可能是该网站的nginx部署中的一个错误。 我可以用其他方式解释它,因为我无法在Chrome或Firefox中重新创build环境。 甚至在用空的用户代理覆盖时也是如此。 我想象它是一个空string和一个未定义的string之间的区别。 节点发送标题的字段完全未定义,而我试图复制的浏览器只发送一个空string。 再次,不能重新创build,但这是我最好的猜测。

我有类似的问题与Node js的请求,所以我写这个npm包:

https://npmjs.org/package/curljs

希望能帮助到你!