我正在webpack开发服务器中运行一个单页应用程序,以便在本地进行热重载。但是,它的后端应用程序不在我的本地计算机上,而是托管在远程服务器中,例如http://remote-server.com.
当我在Chrome地址字段中使用此类地址:0.0.0.0:3000/homepage
时,http请求(对远程后端服务器的api调用)比使用localhost:3000/homepage
慢5倍(甚至更多)
我真的很困惑为什么会发生这种情况?
实际上,更确切地说,问题是,当我要求Chrome ping 0.0.0.0时,给浏览器/服务器意味着什么,因为0.0.0.0只是用来说“绑定到任何可能的地址'
http请求就像
get /remote-server.com/api/v1/users
get /remote-server.com/api/v1/products
get /remote-server.com/api/v1/prices
我期望http请求花费相同的时间..当我使用0.0.0.0
和localhost
答案 0 :(得分:1)
考虑到0.0.0.0只是用来说“绑定到任何可能的地址”,
当我要求Chrome ping 0.0.0.0时,它对浏览器/服务器意味着什么? / p>根据规范RFC5735,0.0.0.0
仅表示“源地址”,这意味着它是不可路由的地址,不能用于目的地。
但是,出于实际原因,许多客户端软件将0.0.0.0
视为localhost
。这样的软件列表包括:Chrome,Firefox,Safari,curl,telnet等。由于启动了许多网络服务器软件并显示诸如“在0.0.0.0上监听...”之类的消息,因此允许访问0.0.0.0
的用户非常多-对初级开发人员友好。
实际上,对于Chrome,此行为被讨论为issue,问题的状态一开始是“ WontFix”,但后来通过以下解决方案更改为“已修复”:
允许显式导航到“ 0.0.0.0”,以支持执行以下操作的系统: 导航到本地主机(违反规范...但看似常见)。
这仍然阻止导航到任何其他以八位字节开头的IP,并且仅 实际以4组分点四进制形式输入时,允许使用0.0.0.0。