X-Forwarded-For 获得用户的真实ip

什么是X-Forwarded-For?

X-Forwarded-For:简称XFF头,它代表客户端,也就是HTTP的请求端真实的IP,只有在通过了HTTP 代理或者负载均衡服务器时才会添加该项。它不是RFC中定义的标准请求头信息,在squid缓存代理服务器开发文档中可以找到该项的详细介绍。标准格式如下:X-Forwarded-For: client1, proxy1, proxy2。

如何通过 X-Forwarded-For来获得用户的真实ip

java 获得用户真实 IP 代码举例:

public String getRemoteIP(HttpServletRequest request)
{
    if (request.getHeader("X-Forwarded-For") == null) /* 存在 X-Forwarded-For 吗? */
    {
        return request.getRemoteAddr(); /* 兼容已有程序 */
    }
    
    return request.getHeader("X-Forwarded-For"); /* 返回用户真实 IP, 如为多个 IP 时, 则取第一个 */
}

简单来说 使用request.getRemoteAddr();  如果在用户启用了代理服务器的情况下 是无法获得真实的ip地址的

那么当使用负载均衡服务器的情况下 可以通过request.getHeader("X-Forwarded-For") 解析请求头来获得真实的ip地址

猜你喜欢

转载自blog.csdn.net/RAVEEE/article/details/81161874