日期:2014-05-17  浏览次数:20615 次

急急急100分求助,axis2获得ip地址问题.求教高手啊。。。。。标题很长了......
我的axis2放在tomcat里面,放在客户的外网服务器上.



MessageContext mc = MessageContext.getCurrentMessageContext();
HttpServletRequest request = (HttpServletRequest) mc
.getProperty(HTTPConstants.MC_HTTP_SERVLETREQUEST);
ip = request.getHeader("x-forwarded-for");
ip+=ip+"||||||" + request.getRemoteAddr();;


下面的返回的结果。奔溃啊。。理论上应该是外网ip才对啊..不管什么地址访问获得都是这个..

<ns:getIp2Response xmlns:ns="http://service.totapps.com">
<ns:return>nullnull||||||192.168.255.58</ns:return>
</ns:getIp2Response>
aixs2?ip 服务器 Java CSS Tomcat

------解决方案--------------------
显然只能得到服务器自己的地址。

所以除非你的服务器是直接连接互联网,中间不经过任何路由、网关或防火墙设备,否则都是内网地址。


x-forwarded-for 这个是代理服务器增加的信息,网络设备一般不懂得去增加这种信息。
------解决方案--------------------
判断下
if (request.getHeader("x-forwarded-for") == null) {   
ip=request.getRemoteAddr();  
}  
ip=request.getHeader("x-forwarded-for");  
}