`

X-Forwarded-For介绍及返回ip地址遇到的坑

阅读更多

今天遇到一个问题:
页面在android版微信内置浏览器中打不开,在ios版本微信及其他浏览器中能够打开,调试了一下发现当用android版微信内置浏览器打开后台报错,错误原因是定位功能,

String ip = request.getHeader("x-forwarded-for");

该语句能够获取到客户端的ip,但dubug之后,发现返回的是两个ip,用,分割:***.***.***.***,***.***.***.***

于是网上查找原因:

参考链接:http://blog.csdn.net/joe_007/article/details/8608621

意思是说,该方法会返回如下格式的ip
X-Forwarded-For: client1, proxy1, proxy2

第一个参数是clientip,即实际访问设备的ip,其他的是代理服务器ip,应该是微信在全国各地的nginx代理服务器。

 

解决方案:

if(!StringUtils.isEmpty(ip)) {
   ip = ip.split(",")[0];
}

加这样一个方法获取第一个参数即可。

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics