java中获取请求ip地址,Java获取请求客户端的真实IP地址

像移动网关一样,iisforward这个ISAPI过滤器也会对request对象进行再包装,附加一些WLS要用的头信息。这种情况下,直接用request.getRemoteAddr()是无法取到真正的客户IP的。

实际的iisforward附加头如下:

WL-Proxy-Client-IP=211.161.1.239

Proxy-Client-IP=211.161.1.239

X-Forwarded-For=211.161.1.239

WL-Proxy-Client-Keysize=

WL-Proxy-Client-Secretkeysize=

X-WebLogic-Request-ClusterInfo=true

X-WebLogic-KeepAliveSecs=30

X-WebLogic-Force-JVMID=-327089098

WL-Proxy-SSL=false

综上,正确作法如下:

private String getIpAddr() {

String ipAddress = null;

//ipAddress = this.getRequest().getRemoteAddr();

ipAddress = this.getRequest().getHeader("x-forwarded-for");

if(ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {

ipAddress =

你可能感兴趣的:(java中获取请求ip地址)