GET请求不会仅在Node.JS中返回?

时间:2014-08-28 04:15:42

标签: javascript node.js https

由于某种原因,此请求GET永远不会返回,但仅在Node.js中。我已经尝试过浏览器,curl,httparty,ruby的Net :: Http,postman,clojure,它们都运行良好。 Node.js不会。

这将按照您的期望

返回
echo "require('https').get('https://github.com/jakecraige.json', function(res) { console.log(res); });" | node

这永远不会返回,它最终会抛出一个ECONNRESET

echo "require('https').get('https://gateway.rpx.realpage.com/rpxgateway/PricingAndAvailability.svc?wsdl', function(res) { console.log(res); });" | node

如果有人能够对此提供一些非常有帮助的见解。

谢谢!

4 个答案:

答案 0 :(得分:1)

IRC的Zyrri指示我到这里解决问题。

SSL Error in nodejs

看起来它想要来自node.js的SSLv3_method

答案 1 :(得分:0)

$ curl 'https://gateway.rpx.realpage.com/rpxgateway/PricingAndAvailability.svc' -I
HTTP/1.1 400 Bad Request

尝试提供错误处理程序,看看你得到了什么。

答案 2 :(得分:0)

无论我选择哪个网址,您的代码都会挂起。我相信这个节点试图确保我们不会过早退出,为了以防万一,运行它的事件循环。您列出的所有其他技术都是同步的,而不是事件驱动的。此外,res可能不是您想要打印的内容,因为它是节点的内部响应对象。试试这个:

cat <<EOF | node
require("https").get("https://github.com/jakecraige.json",
  function(res) {
    var body = ''
    res.
      on('data', function(data) { body += data}).
      on('end', function() { console.log(body); process.exit(0); });
  }
);
EOF

答案 3 :(得分:0)

将@Constarr链接与这个原始帖子结合起来我有这个构造的请求获得有效的响应。

var https = require('https');
https.globalAgent.options.secureProtocol = 'SSLv3_method';

https.get("https://gateway.rpx.realpage.com/rpxgateway/PricingAndAvailability.svc?wsdl", function(res) {
  console.log("Got response: " + res.statusCode);
}).on('error', function(e) {
  console.log("Got error: " + e.message);
});            

Docs here