尝试 HTTP 请求时连接 ECONNREFUSED 127.0.0.1:80

Posted

技术标签:

【中文标题】尝试 HTTP 请求时连接 ECONNREFUSED 127.0.0.1:80【英文标题】:Getting connect ECONNREFUSED 127.0.0.1:80 when attempting HTTP request 【发布时间】:2017-02-16 01:40:12 【问题描述】:

我正在尝试使用本机 node.js http 模块向 news.google.com 发出 http 请求。当我尝试以下操作时,我收到了connect ECONNREFUSED 127.0.0.1:80 错误

var http = require('http');

var payload = JSON.stringify(
    name: 'John Smith',
    email: 'john.smith@smith.com',
    resume: 'https://drive.google.com/open?id=asgsaegsehsehseh'
);

var options = 
    hostname: 'https://news.google.com',
    path: '/',
    method: 'GET'
;

var httpRequest = http.request(options, function(request, response) 
    console.log('STATUS', response.statusCode);
    response.setEncoding('utf8');

    response.on('data', function(chunk) 
        console.log('BODY:', chunk);
    );

    response.on('end', function() 
        console.log('No more data in response');
    );
);

httpRequest.on('error', function(e) 
    console.log('Error with the request:', e.message);
);

httpRequest.write(payload);
httpRequest.end();

为什么会出现这个错误?

我尝试使用request npm 模块。它奏效了!

【问题讨论】:

【参考方案1】:

在我的例子中,问题实际上是我使用的 HTTP 客户端的默认行为,axios

默认情况下,如果 axios 找不到请求的 URL 或 http 方法(GET/POST/PUT),它会将我们重定向到 127.0.0.1:80。所以最好检查你的网址是否也在使用axios

【讨论】:

感谢您的帮助。在 reactjs (s-s-r.tsx) 的服务器内部,Axios url 不正确。【参考方案2】:

我的问题是在使用supertestjest 时。我的错误是没有将“/”作为某些 url 的前缀。因此,请仔细检查您发出的请求的 url 是否正确。

【讨论】:

有同样的经历。在使用supertestjest 执行请求之前忘记了前导“/”。 Dziekuje bardzo。 出于某种奇怪的原因,这对我有用。感谢上帝,堆栈溢出。 我自己错过了前导“/”。这有帮助。谢谢 我有领先的/,但错误地也有一个不必要的.。谢谢! 我犯了同样的错误,这对我有帮助。谢谢!【参考方案3】:

我正在使用 axios,这个错误发生在 get 请求中,通过在我的 URL 前添加 http:// 解决了它(在我的情况下,服务器是 http)

【讨论】:

【参考方案4】:

这里有几个问题:

    options 结构的hostname 字段应该只是主机,而不是 URL。在您的情况下,它应该只是 'news.google.com'

    request 方法的回调签名是 function (response) -- 你的签名是 function (request, response)。丢掉第一个参数。

    正如所写,这将返回一个 HTTP 重定向到 https 站点。将var http = require('http'); 替换为var https = require('https');,然后在各处使用https 而不是http

【讨论】:

【参考方案5】:

我遇到了同样的问题。 通过修复我的代码中的 HTTP 请求路径错误来解决它。

【讨论】:

【参考方案6】:

我遇到了这个问题,我的解决方案(对大多数人来说可能不一样)是服务器还没有监听,我必须在之后调用 axios 函数。

【讨论】:

您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。

以上是关于尝试 HTTP 请求时连接 ECONNREFUSED 127.0.0.1:80的主要内容,如果未能解决你的问题,请参考以下文章

尝试对本地 Web api(离子 android 应用程序)的 http 请求时连接被拒绝

错误:尝试发出 localhost 请求时在 Insomnia 上出现 SSL 连接错误

无法运行量角器 - ECONNREFUSED 连接 ECONNREFUSED

错误:在exports._errnoException 处连接ECONNREFUSED 在TCPConnectWrap.afterConnect

HTTP 请求重新启动 Internet 连接

Cors 标头未正确处理(http 请求很好,但 socke.io 连接不正确)