我使用 WSL(ubuntu 22.0.4)并使用 VS Code 连接 WSL 进行开发。
我创建了一个这样的网络服务器:
import express from 'express';
const app = express();
app.get('/', (req, res) => {
res.cookie('state', 'ok', { httpOnly: true });
res.sendStatus(200);
});
app.listen(3000, () => {
console.log('Listening on port 3000');
});
我从 Windows 操作系统的文件中删除了127.0.0.1 localhost
记录C:\Windows\System32\drivers\etc\hosts
C:\Windows\System32\drivers\etc\hosts
:
# localhost name resolution is handled within DNS itself.
# 127.0.0.1 localhost
# ::1 localhost
/etc/hosts
我还从WSL 中删除了此记录
# This file was automatically generated by WSL. To stop automatic generation of this file, add the following entry to /etc/wsl.conf:
# [network]
# generateHosts = false
#127.0.0.1 localhost
# 127.0.1.1 LAPTOP-C8AFGSGK. LAPTOP-C8AFGSGK
# 127.0.0.1 localhost
# 127.0.0.1 api.example.com
# The following lines are desirable for IPv6 capable hosts
#::1 ip6-localhost ip6-loopback
#fe00::0 ip6-localnet
#ff00::0 ip6-mcastprefix
#ff02::1 ip6-allnodes
#ff02::2 ip6-allrouters
如您所见,我不仅在 Windows 操作系统中删除了 hosts 文件中的所有记录,而且在 WSL 中删除了所有记录。
但是当我http://localhost:3000
在浏览器中访问时,它仍然可以访问Web服务器并获取响应。
我使用提供的 DNS 查找edge://net-internals/#dns
,输入localhost
域名,得到
Resolved IP addresses of "localhost": ["::1","127.0.0.1"].
No data on which protocols are supported.
看来该localhost
域名仍然指向127.0.0.1
。
我希望http://localhost:3000
不应该访问 Web 服务器,只有http://127.0.0.1:3000
可以访问 Web 服务器。我遗漏了什么?