测试环境启动后,项目A前端访问项目B某接口报错 net::ERR_NAME_NOT_RESOLVED,F12,切到Network看到接口状态如下:

切换到Console看到状态如下:

怀疑是项目A、B服务器网络不通的问题,结果运维同事在项目A服务器上curl 项目B的接口,返回200,说明网络是通的。。。

百思不得其解,网上各种查询也没有相关答案, 还以为是Docker机器里DNS解析的问题,,,
纠结了一下午,忽然想清楚了,在项目A服务器上curl 项目B的接口,返回200,说明项目A、B服务器是通的。而我在本机访问项目A,再在项目A中访问项目B,这就要好好考虑清楚了:

方式一:如果我本机是通过项目A转发到项目B,那么肯定是没问题的,因为我本机到项目A是通的,项目A到项目B也是通的。

方式二:如果我本机通过项目A重定向到项目B,那么就要看我本机到项目B是否是通的了。

此处我本机是通过项目A的js文件里配置的地址直接访问了项目B,也就是上面的方式二,中间并未经过项目A转发,所以一切就明了了:我本机到项目B不通,导致报错 net::ERR_NAME_NOT_RESOLVED

此处用的是测试环境内网域名,所以修改我本机host文件(C:\Windows\System32\drivers\etc\hosts)添加上项目B服务器IP和内网域名的映射:

再次访问,

200 OK

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐