java中servlet如何获取真实ip呢?

乔欣 Servlet 发布时间:2022-12-14 09:19:47 阅读数:17931 1
下文笔者讲述servlet获取真实IP地址的方法分享,如下所示

何为真实IP地址

由于使用了很多反向代理技术
 导致IP地址层层转发
 那么我们在日常开发中如何获取真实IP地址呢?
下文笔者将一一道来,如下所示
实现思路:
    1.使用request.getRemoteAddr()获取真实IP
    
	2.当使用反向代理后
     无法直接获取,此时我们可使用X-FORWARDED-FOR从报头中获取

    3.当没有x-forwarded-for则尝试用proxy-client-ip、wl-proxy-client-ip
例:
获取真实IP地址的方法分享
 
/**  
 *
 * @param request 请求
 */
private static String getRemoteHost(HttpServletRequest request) {
	// 反向代理后:转发请求的HTTP头信息中,增加了X-Real-IP信息
	String ip = request.getHeader("X-Real-IP");
	if (StringUtils.isBlank(ip) || STR_UNKNOWN.equalsIgnoreCase(ip)) {
		ip = request.getHeader("x-Forwarded-For");
	}
	if (StringUtils.isBlank(ip) || STR_UNKNOWN.equalsIgnoreCase(ip)) {
		ip = request.getHeader("Proxy-Client-IP");
	}
	if (StringUtils.isBlank(ip) || STR_UNKNOWN.equalsIgnoreCase(ip)) {
		ip = request.getHeader("WL-Proxy-Client-IP");
	}
	if (StringUtils.isBlank(ip) || STR_UNKNOWN.equalsIgnoreCase(ip)) {
		ip = request.getRemoteAddr();
	}
	return "0:0:0:0:0:0:0:1".equals(ip) ? "127.0.0.1" : ip;
}
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/Servlet/202212/279.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者