在apache+WebLogic整合系统中,apache会对request对象进行再包装,附加一些WLS要用的头信息。这种情况下,直接用request.getRemoteAddr()是无法取到真正的客户IP的。
apache会增加下列头信息:
X-Forwarded-For=211.161.1.239
WL-Proxy-Client-IP=211.161.1.239
所取得客户的IP需要这样:
StringIP=request.getHeader("X-Forwarded-For");
if(IP== null ||IP.length() == 0) {
IP=request.getHeader("WL-Proxy-Client-IP");
}
if(IP== null ||IP.length() == 0) {
IP=request.getRemoteAddr();
}
或者也可通过WebLogic的设置直接能过request.getRemoteAddr();取得客户的IP。
在WebLogicconsole
domain->servers->servername->General ->Advanced Options ->
WebLogicPlug-In Enabled
Specifies whether this server uses the proprietary WL-Proxy-Client-IPheader. (This is needed only whenWebLogicplugins are configured.)
但是如果apache设置的是反向代理这样就不行了,因为apache不会向heaer写入WL-Proxy-Client-IP的信息。只能通过第一种方法解决。
Apache+WebLogic IP获取
在Apache+WebLogic环境中,由于Apache对请求进行了再包装,直接获取客户端IP的方法不再有效。本文介绍了如何通过检查特定的HTTP头部信息来正确地获取客户端的真实IP地址。
4万+

被折叠的 条评论
为什么被折叠?



