今天有位小伙伴来求助,说他们公司用的单点登录,接口URL在公司的公网域名下,如(https://www.csdn.net/xxx/login),他打包好的Web项目在自己机子上跑没问题,一部署到服务器就报 java.net.UnknownHostException 错误,从字面上看是请求目标的服务连不上,网络不通。这到底是怎么回事?又该怎么解决呢?mark一下

一般原因:

  • 1.服务器没网,调不到公网域名,无法解析出IP,从而无法识别host,导致无法连接;
  • 2.网络端口映射做了策略,调用不到自己路由的域名,必须调内网IP;

  询问了小伙伴一下,她属于第一种,服务器没网,但她们单点登录服务也在同一个内网,按理应该通的。

  那么就清楚了,说明Web服务器没有配置和单点登录服务 域名/IP的映射关系,所以访问不到,需要在hosts文件中把接口的 IP/域名 写上,在服务器发送请求时,就会自动把域名转成IP进行调用了。

解决步骤:

下面我将以CSDN的域名为例(www.csdn.net)。注:小伙伴的服务器是Windows,和Linux修改方式基本相同

  1. 用有互联网的机器 window+r → cmd 进入dos窗口

  2. 获取www.csdn.net 域名对应的IP,命令:nslookup www.csdn.net
    在这里插入图片描述
    插一句嘴,国内whois网站(如站长之家)都是封装了各种类似命令集成一下而已
    在这里插入图片描述

  3. 打开hosts文件, C:\Windows\System32\drivers\etc\hosts (Linux中一般在:/etc/hosts)

  4. 修改hosts文件,把域名和IP写到hosts文件中,用于域名解析成IP
    在这里插入图片描述

  5. 执行:ipconfig /flushdns #清除DNS缓存,刷新

完成,这样你就可以调到CSDN域名下的接口了:如 - https://www.csdn.net/xxx/login

希望你已经解决了这个问题,如果有其他疑惑,评论区等你哦~

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐