gpt4 book ai didi

node.js - 为什么 Node.js/Express 不接受来自本地主机的连接?

转载 作者:太空宇宙 更新时间:2023-11-03 23:28:55 27 4
gpt4 key购买 nike

我今天遇到了这种奇怪的行为,我找不到原因。我正在使用 MacOS Sierra。

我有这个代码(Express):

app.server.listen(config.port, config.address, function () {
logger.info('app is listening on', config.address + ':' + config.port);
});

然后打印出来

app is listening on 127.0.0.1:5000

但是,如果我尝试curl,它会失败。

$ curl http://localhost:5000/api/ping
curl: (56) Recv failure: Connection reset by peer

我检查了我的主机文件:

$ cat /etc/hosts
##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting. Do not change this entry.
##
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost

所以我 ping localhost 以确保它解析为 127.0.0.1:

$ ping localhost
PING localhost (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.061 ms
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.126 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.135 ms
^C
--- localhost ping statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.061/0.107/0.135/0.033 ms

我再试一次,但失败了

$ curl http://localhost:5000/api/ping
curl: (56) Recv failure: Connection reset by peer

现在我尝试使用 127.0.0.1 来代替,瞧,它有效吗?

$ curl http://127.0.0.1:5000/api/ping
pong

出了什么问题?

最佳答案

cURL 正在尝试通过 IPv6 连接,但您的 Express 服务器正在监听 127.0.0.1,即 IPv4。

您可以使用 -4 选项强制 cURL 通过 IPv4 进行连接。

curl -4 http://127.0.0.1:5000/api/ping

关于node.js - 为什么 Node.js/Express 不接受来自本地主机的连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40517983/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com