我有一个单页应用程序在 webpack 开发服务器中运行,用于在我的本地热重载。但是,它的后端应用程序不在我的本地,而是托管在远程服务器上,例如http://remote-server.com.
当我在 chrome 地址字段中使用这样的地址时:0.0.0.0:3000/homepage,http 请求(对远程后端服务器的 api 调用)比使用慢 5 倍(甚至更多)localhost:3000/homepage
我真的很困惑为什么会发生这种情况?
实际上,更准确地说,问题是,当我要求 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
Run Code Online (Sandbox Code Playgroud)
我期待 http 请求花费相同的时间......当我使用0.0.0.0和localhost
鉴于 0.0.0.0 只是用来表示“绑定到任何可能的地址”,当我要求 Chrome ping 0.0.0.0 时,这对浏览器/服务器意味着什么?
根据RFC5735规范,0.0.0.0仅表示“源地址”,这意味着它是不可路由的地址,不能用于目的地。
但是,对于实际的原因,很多客户端软件的享受0.0.0.0作为localhost。此类软件列表包括:Chrome、Firefox、Safari、curl、telnet 等。因为许多网络服务器软件启动时都会显示“listen on 0.0.0.0...”等消息,因此0.0.0.0对于初级开发人员来说,允许访问非常人性化。
实际上,对于 Chrome 来说,这种行为是作为一个问题来讨论的,问题的状态一开始是“WontFix”,但后来改为“Fixed”,解决方案如下:
允许显式导航到“0.0.0.0”以支持执行到本地主机的导航的系统(无视规范......但似乎很常见)。
这仍然会阻止导航到任何其他具有前导八位字节 0 的 IP,并且仅当 0.0.0.0 以 4 分量点分四元组形式实际输入时才允许。
| 归档时间: |
|
| 查看次数: |
1175 次 |
| 最近记录: |