package com.yami.trading.api.util;
|
|
import cn.hutool.core.util.StrUtil;
|
import org.springframework.web.context.request.RequestContextHolder;
|
import org.springframework.web.context.request.ServletRequestAttributes;
|
|
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletResponse;
|
|
public class ServletUtil {
|
|
|
/**
|
* 从Request对象中获得客户端IP,处理了HTTP代理服务器和Nginx的反向代理截取了ip
|
*
|
* @param request
|
* @return ip
|
*/
|
public static String getIp(HttpServletRequest request) {
|
String ip = request.getHeader("X-Forwarded-For");
|
if (StrUtil.isNotEmpty(ip) && !"unKnown".equalsIgnoreCase(ip)) {
|
// 多次反向代理后会有多个ip值,第一个ip才是真实ip
|
int index = ip.indexOf(",");
|
if (index != -1) {
|
return ip.substring(0, index);
|
} else {
|
return ip;
|
}
|
}
|
ip = request.getHeader("X-Real-IP");
|
if (StrUtil.isNotEmpty(ip) && !"unKnown".equalsIgnoreCase(ip)) {
|
return ip;
|
}
|
return request.getRemoteAddr();
|
}
|
|
public static HttpServletRequest getRequest() {
|
return ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()).getRequest();
|
}
|
|
protected HttpServletResponse getResponse() {
|
return ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getResponse();
|
}
|
}
|