当我在浏览器中使用0.0.0.0而不是localhost时,Chrome /服务器会做什么?

时间:2019-04-08 01:59:56

标签: google-chrome ip

我正在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.0localhost

1 个答案:

答案 0 :(得分:1)

考虑到0.0.0.0只是用来说“绑定到任何可能的地址”,

当我要求Chrome ping 0.0.0.0时,它对浏览器/服务器意味着什么? / p>

根据规范RFC57350.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。