HttpServletRequest getRemoteHost、getServerName、getLocalName区别

时间:2024-01-22 15:30:06

getRemoteHost()、getServerName()、getLocalName()区别

request.getRemoteHost(): 返回客户端主机的名称,而不是直接的IP地址 实现机制通常是通过DNS反向查询 request.getRemoteAddr() 返回的IP地址以得到对应的主机名。如果反向解析失败、出于性能原因未进行反向解析、没有进行DNS查询的能力,可能会返回与 getRemoteAddr() 相同的IP地址,或者在某些情况下返回 null

request.getServerName(): 客户端请求时所使用的服务器域名IP地址 http://example.com:8080/app/somepage.jsp 访问时就是"example.com"
http://192.168.0.1:8080/app/somepage.jsp 访问时就是"192.168.0.1"

request.getLocalName(): 当前处理请求的服务器的本地主机名或IP地址,在多宿主环境、有反向代理、负载均衡器的情况下,这个值可能与客户端直接连接的主机名或IP不同。 假设服务器的本地主机名是 “local-server” 或者内部IP地址是 “10.0.0.5”,那么返回就是 “local-server” 或"10.0.0.5"