HttpServletRequest getServerPort()、getLocalPort() 、getRemotePort() 区别

发布时间:2024年01月18日

getRemotePort() 、getServerPort()、getLocalPort()

request.getServerPort()request.getLocalPort()request.getRemotePort() 这三个方法都是获取与HTTP请求相关的端口信息

客户端(如浏览器)通过某个随机分配的网络连接端口(7070)
向服务器发送HTTP请求( http://example.com:8080/app/somepage.jsp)连接到服务器端口(8080)。
反向代理或负载均衡场景下,请求可能从端口(8080)转发到另一个端口(9090)进行处理。

request.getRemotePort(): 发起请求的客户端所使用的端口号 7070
request.getServerPort(): 浏览器发送请求时连接到的服务器端口 8080
request.getLocalPort(): 当前处理请求的服务器上的本地端口 9090

在这里插入图片描述

request.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"

在这里插入图片描述

getRemoteAddr()、getLocalAddr()区别

request.getRemoteAddr(): 发起HTTP请求的客户端(例如浏览器)的IP地址 在实际应用中,如果存在反向代理、负载均衡器等网络组件时,可能需要通过特定的HTTP头(如 X-Real-IPX-Forwarded-For)来获取真实的客户端IP地址,因为这些网络组件可能会修改原始请求的来源信息。

request.getLocalAddr(): 当前处理请求的服务器接口绑定的IP地址 在多网络接口、多宿主配置的服务器上,这个值会是接收并处理当前请求的那个网络接口的IP地址。

用户通过浏览器(设备IP地址是 103.56.78.90)访问部署在服务器上的Web应用(IP地址 192.168.1.10,监听端口 8080)
request.getRemoteAddr() : “103.56.78.90”
request.getLocalAddr() : “192.168.1.10”

文章来源:https://blog.csdn.net/weixin_37646636/article/details/135661943
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。