我目前正在做一个项目,我需要模拟实时网站的 URL,以便在项目网站、项目浏览器扩展和项目数据库之间正确通信。为此,我修改了我电脑的“hosts”文件。我花了几个小时才解决最初遇到的任何问题,它工作了大约 2 周。昨天,它又停止工作了,我一点办法都没有让它再次工作。我没有更改我的 hosts 文件中的任何内容。
此外,导航到localhost:3080
,127.0.0.1:3080
甚至example-site.com:3080
在浏览器中都可以正常使用,但不简单example-site.com
- 这是最近才起作用的。
我看过了许多 超级用户网和stackoverflow.com发布和回答人们遇到类似问题而我却无法实施任何解决方案。
我的主机文件如下所示:
...
127.0.0.1 example-site.com www.example-site.com
...
我也尝试过将条目分成不同的行,但没有什么区别。
据我所知,ping URL 也是可行的。以下是 ping 响应:
Pinging example-site.com [127.0.0.1] with 32 bytes of data:
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Ping statistics for 127.0.0.1:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
我尝试过的一些方法:
- 重新启动计算机(多次)
ipconfig /flushdns
在具有管理权限的终端中- 清除 Chrome 中的主机缓存 (
chrome://net-internals/#dns
) - 允许从本地主机加载的资源使用无效证书(
chrome://flags/#allow-insecure-localhost
) sfc /scannow
在终端运行- 确保 hosts 文件采用 ANSI 或 UTF-8 编码
- 还有一些其他的事情我记不清了……
如任何人提供任何帮助或见解,都将不胜感激。
答案1
hosts
-file 与该问题无关,它仅将名称绑定到 IP 地址。
由于localhost:3080
和example-site.com:3080
可以通过浏览器访问,但 simpleexample-site.com
不能,因此 Web 服务不接受端口 80 (HTTP) 和/或 443 (HTTPS) 中的流量。可以在 Windows 操作系统中通过netstat -aon
提升的命令提示符运行来验证这一点。如果端口已打开,netstat
将显示0.0.0.0:80 LISTENING
和0.0.0.0:443 LISTENING
。
如果未显示这些内容,则提供访问的服务未侦听这些端口。当前服务配置文件将包含两个条目,如下所示:listen-port=3080
和listen-port=3443
。应该可以以相同的方式简单地添加端口 80 和 443,具体取决于应允许访问的协议。现代 Web 服务通常仅允许 HTTPS。
如果在配置中添加这些端口可以在防火墙关闭时进行访问,但在防火墙打开时却不能进行访问,则在防火墙配置中也需要打开相同的端口。
使用 *NIX OSnetstat
命令和输出略有不同。在 Debian Bullseye 中,我会使用命令netstat -tulpn | grep "80\|443" | grep "LISTEN"
。