private static ServletRequestAttributes getCurrentRequestAttributes(){
return ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes());
}
获取HttpServletRequest
public static HttpServletRequest getCurrentHttpServletRequest(){
return getCurrentRequestAttributes().getRequest();
}
获取 HttpServletResponse (版本过低会导致无法使用)
public static HttpServletResponse getCurrentHttpServletResponse(){
return getCurrentRequestAttributes().getResponse();
}
获取真实ip(如果配置了nginx代理,需要在nginx配置真实ip转发)
public static String getRealIpAddress() {
HttpServletRequest request = getCurrentHttpServletRequest();
// 获取请求主机IP地址,如果通过代理进来,则透过防火墙获取真实IP地址
String ip = request.getHeader("X-Forwarded-For");
if (log.isInfoEnabled()) {
log.info("getIpAddress(HttpServletRequest) - X-Forwarded-For - String ip=" + ip);
}
if (ip != null && ip.length() != 0 && !"unknown".equalsIgnoreCase(ip)){
if (ip.length()<=15){
return ip;
}
String[] ips = ip.split(",");
for (String strIp : ips) {
if ("unknown".equalsIgnoreCase(strIp)) {
continue;
}
return strIp;
}
}
ip = request.getHeader("Proxy-Client-IP");
if (log.isInfoEnabled()) {
log.info("getIpAddress(HttpServletRequest) - Proxy-Client-IP - String ip=" + ip);
}
if (ip != null && ip.length() != 0 && !"unknown".equalsIgnoreCase(ip)){
return ip;
}
ip = request.getHeader("WL-Proxy-Client-IP");
if (log.isInfoEnabled()) {
log.info("getIpAddress(HttpServletRequest) - WL-Proxy-Client-IP - String ip=" + ip);
}
if (ip != null && ip.length() != 0 && !"unknown".equalsIgnoreCase(ip)){
return ip;
}
ip = request.getHeader("HTTP_CLIENT_IP");
if (log.isInfoEnabled()) {
log.info("getIpAddress(HttpServletRequest) - HTTP_CLIENT_IP - String ip=" + ip);
}
if (ip != null && ip.length() != 0 && !"unknown".equalsIgnoreCase(ip)){
return ip;
}
ip = request.getHeader("HTTP_X_FORWARDED_FOR");
if (log.isInfoEnabled()) {
log.info("getIpAddress(HttpServletRequest) - HTTP_X_FORWARDED_FOR - String ip=" + ip);
}
if (ip != null && ip.length() != 0 && !"unknown".equalsIgnoreCase(ip)){
return ip;
}
ip = request.getRemoteAddr();
if (log.isInfoEnabled()) {
log.info("getIpAddress(HttpServletRequest) - getRemoteAddr - String ip=" + ip);
}
if (ip != null && ip.length() != 0 && !"unknown".equalsIgnoreCase(ip)){
return ip;
}
return null;
}