java获取用户ip地址
/**
* 获取请求IP
* 参考:https://www.cnblogs.com/mypath/articles/5239687.html
* A同学和B同学在同一局域网内请求接口 https://xxx.com/abc-service/vcode/send 得到的结果(经过了nginx):
*
* A同学:
* X-Real-IP:1.96.130.81
* X-Forwarded-For: 121.125.171.194, 1.96.130.81
*
* B同学:
* X-Real-IP:1.96.119.104
* X-Forwarded-For: 121.125.171.194, 1.96.119.104
*
*
* @param request
* @return
*/
public static String getRequestIpAddress(HttpServletRequest request) {
String ipAddress = null;
if (org.apache.commons.lang3.StringUtils.isEmpty(ipAddress) || org.apache.commons.lang3.StringUtils.isBlank(ipAddress) || "unknown".equalsIgnoreCase(ipAddress))
ipAddress = request.getHeader("X-Real-IP");
if (org.apache.commons.lang3.StringUtils.isEmpty(ipAddress) || org.apache.commons.lang3.StringUtils.isBlank(ipAddress) || "unknown".equalsIgnoreCase(ipAddress))
ipAddress = request.getHeader("X-Forwarded-For");
// 对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割
if (ipAddress != null && ipAddress.length() > 15) {
if (ipAddress.indexOf(",") > 0) {
ipAddress = ipAddress.substring(0, ipAddress.indexOf(","));
}
}
return ipAddress;
}
通过java获取请求用户IP地址:
一定要看下这个文章再往下看: https://www.cnblogs.com/mypath/articles/5239687.html
A同学和B同学在同一局域网内请求接口 https://xxx.com/abc-service/vcode/send 得到的结果(经过了nginx):
A同学:
X-Real-IP:1.96.130.81
X-Forwarded-For: 121.125.171.194, 1.96.130.81
B同学:
X-Real-IP:1.96.119.104
X-Forwarded-For: 121.125.171.194, 1.96.119.104