【问题标题】:GET Request in node.js is not workingnode.js 中的 GET 请求不起作用
【发布时间】:2013-09-04 03:19:37
【问题描述】:

我在通过 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

【问题讨论】:

  • 您在问题的标题中说GET 请求,但实际上在您的代码中发送了POST。也许,只是检查一下?
  • 两者都不起作用,我已更改代码以反映问题标题。
  • 为什么要为 GET 请求编写正文?从技术上讲,它是允许的,但可能被服务器阻止了
  • 只需在浏览器中打开此 URL 即可将我重定向到 https 站点。也许,您的 curl 命令遵循重定向(即使它不是那么没有额外的标志)。几乎没有节点的http.requst 默认处理重定向。

标签: javascript node.js http curl httprequest


【解决方案1】:

当我发出相同的请求,但在标头中添加了一个用户代理时,我得到了一个响应,它清楚地说明了发生了什么。尝试将此行添加到您的选项中:

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 服务器,可以将您重定向到具有相同 URL 的 HTTPS 站点。如果不包含用户代理,您没有得到响应可能是该站点的 nginx 部署中的错误。我无法以其他方式解释它,因为我无法在 Chrome 或 Firefox 中重现这种情况。即使用空的用户代理覆盖。我想这是空字符串和未定义字符串之间的区别。节点发送的标头字段完全未定义,而我试图复制的浏览器只发送一个空字符串。同样,无法重新创建,但这是我的最佳猜测。

【讨论】:

  • 嗯,你让我想,我们可以很容易地对那个站点进行 DDOS,有人想对 egopay.com 进行压力测试吗?
  • 为什么会很容易?
  • 好吧,他们重定向的 http 链接有一个明显的错误。他们的真实站点会很好,但是他们的 nginx 服务器已损坏,并且比使用 404 对格式错误的请求快速响应的 DDOS 更容易(也许容易是轻描淡写,但更容易)。
【解决方案2】:

我在 Node js 中遇到了类似的请求问题,所以我写了这个 npm 包:

https://npmjs.org/package/curljs

希望对你有帮助!

【讨论】:

  • 成功了!太感谢了。无论如何,我仍然想知道 http.request() 方法有什么问题。
猜你喜欢
  • 2021-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-10
  • 1970-01-01
  • 2017-07-04
  • 2016-02-12
  • 1970-01-01
相关资源
最近更新 更多