问题描述
这段时间在公司做javaweb项目,项目是前后端分离的,最近项目基本收尾,到最后的调试和改bug阶段了,调试和修改bug先在本地进行测试,我在本地启动后端项目,负责前端的同事在本地启动前端项目(我俩在一个局域网下)。前端同事通过我的内网ip+端口+接口名字(ip+端口是在一个配置文件中配置的)调用我的服务,拿到返回的数据进行渲染和展示。当测试某项功能没有问题后,就将写好的前端(修改配置文件中统一的ip+端口)后端(将本地数据库连接修改为线上的数据库连接)代码部署到公网服务器上。前端后端分别部署。当前后端都部署成功后,用线上的地址访问前端页面,看其中的一个页面发现,里面的数据竟然是我本地的数据,百思不得其解,感觉很是神奇,为什么线上版本能访问我本地数据库中的东西那。
问题揭秘
原因是因为前端同事在部署代码的时候,忘记改变配置文件中ip+端口,导致线上前端版本调用的是本地的接口,恰好我本地的后台还在运行,所以线上的版本会出现我本地数据库中的数据。
问题总结
这个问题说明了,当我们访问一个公网网站(url)地址的时候,是根据我们本地的网络来访问的,而不是根据此网站所在的服务器的网络来访问的。也就是说联网电脑访问公网的网站,是我们电脑自己去解析地址的,而不是由公网网站的服务器解析地址,然后返回到我们电脑的。