request getHeader(「x-forwarded-for」)リアルIPを取得
2128 ワード
request IP: request.getRemoteAddr() :192.168.0.106
:request.getRemoteHost() :abc
request.getHeader("Host") :192.168.0.1:8080
Web :request.getServerName() :192.168.0.1
:request.getServerPort() :8080
JSP , IP :request.getRemoteAddr(), 。
Apache,Squid IP 。
, request.getRemoteAddr() IP :127.0.0.1 192.168.1.110, IP。
, , IP, 。
HTTP , X-FORWARDED-FOR 。 IP 。
index.jsp/ , index.jsp , index.jsp ,
, index.jsp ,
index.jsp request.getRemoteAddr() IP , IP 。
IP :
public String getRemortIP(HttpServletRequest request) {
if (request.getHeader("x-forwarded-for") == null) {
return request.getRemoteAddr();
}
return request.getHeader("x-forwarded-for");
}
IP :
public String getIpAddr(HttpServletRequest request) {
, ,X-Forwarded-For , IP ,
IP ? X-Forwarded-For unknown IP 。
: X-Forwarded-For:192.168.1.110, 192.168.1.120, 192.168.1.130, 192.168.1.100 IP : 192.168.1.110
String ip = request.getHeader("x-forwarded-for");
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("Proxy-Client-IP");
}
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP");
}
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
return ip;
}