我想知道在本地开发时使用
lvh.me
代替localhost
是否安全,因为lvh.me
必须得到解决,并且IP可能会随着时间的推移而改变。
使用
lvh.me
的目标是能够处理子域,因为localhost
没有顶级域。
除非您是 lvh.me 的维护者,否则您无法确定它不会消失或更改 lvh.me 的 RR。
您可以使用
localhost.localdomain
代替 localhost
,只需在 hosts
文件中添加以下行:
127.0.0.1 localhost localhost.localdomain
::1 localhost localhost.localdomain
这比使用 lvh.me 更好,因为:
既然您在评论中表示您不想更新主机文件,那么您就无法确保 lvh.me 将始终为您的开发人员工作。因此,回答你的问题:不安全。您可以为自己注册一个域名,但正如我之前所说,某些解析器会阻止与私有地址空间相对应的答案。
lvh.me 于 2021 年 6 月 7 日未解析为 127.0.0.1。根据您无法控制的 DNS 名称,会带来此类风险。尽管域名在当天结束时已恢复,但此答案提供了一些依赖其他人的 DNS 配置的替代方案。
Firefox 和 Google Chrome 现在都将
*.localhost
名称视为 localhost
。他们还对端口号做了正确的事情。
要自己测试一下,启动本地http服务器监听8000端口:
python -m http.server 8000
然后尝试这些链接
这个技巧对命令行程序没有帮助。例如,此命令将无法解析主机:
curl http://example.localhost:8000
Curl 本身提供了许多其他技巧,如果您需要在命令行上自定义子域,这些技巧可能对您有用。例如,这个技巧有效:
curl --resolve example.localhost:127.0.0.1 \
http://example.localhost:8000
还值得注意的是,类似的服务仍然可用。
参见 https://readme.localtest.me。
最后一个替代方法是配置您自己的通配符 CNAME 以解析为 127.0.0.1。例如:
*.my.example.com. 1800 IN CNAME my.example.com.
my.example.com. 1800 IN A 127.0.0.1
不可以,因为目前 http://lvh.me 的域名已过期。😬
lvh.me
或 localtest.me
等服务只是 DNS 服务,因此您向它们发布的唯一内容就是您正在使用的名称或主机。它们可以随时解析到任何 IP,但只要您仅将它们用于具有虚假数据的本地测试,您就会安全。
但是如果他们关闭服务怎么办?同样,由于您应该只将它们用于本地测试,因此您将立即获得反馈,并且可以轻松返回使用
localhost
。
如果您不想重写代码,快速解决方法是打开主机文件
sudo nano /etc/hosts
粘贴(将 yoursubdomain 替换为您要调用的子域)
127.0.0.1 yoursubdomain.lvh.me
推
ctrl-x
然后y
然后enter
那么你就可以出发了
这取决于你在做什么。 如果是本地开发,那么大多数时候是的,如果您想检查,您随时可以解决它:
对于 Linux 或 osx,您可以在终端中运行:
dig X.nip.io
它应该始终返回 127.0.0.1。 因此,虽然这不是“最安全”的方法(因为您本身不管理 DNS),但我仍然在必要时经常使用它来解析 TLD。 以下是截至 2022/2023 年仍然存在的一些有效且信誉良好的网站:
其他人说得好:不,这并不能保证安全。
到目前为止,您拥有的一个选项尚未出现在此处的答案中,那就是您可以设置自己的
lvh.me
,足够简单:
如果您有权访问任何可以设置 DNS 记录的域,您只需将
A
记录添加到 *.localhost.yourdomain.com
(或 *.lvh.yourdomain.com
)并将其指向 127.0.0.1
。这与 lvh.me
提供的效果相同。
您只需将浏览器指向
myproject.apps.localhost
或 www.example.net.localhost
。