java、servlet、jsp获取真实IP地址(代理、F5、WebLogic、Apache)

<%!
public static void guessRealIp(HttpServletRequest req, HttpServletResponse resp) {

    try {
	    resp.getWriter().write("X-Forwarded-For: " + req.getHeader("X-Forwarded-For") + "<br>");
	    resp.getWriter().write("Proxy-Client-IP: " + req.getHeader("Proxy-Client-IP") + "<br>");
	    resp.getWriter().write("WL-Proxy-Client-IP: " + req.getHeader("WL-Proxy-Client-IP") + "<br>");
	    resp.getWriter().write("getRemoteAddr: " + req.getRemoteAddr() + "<br>");
    } catch (Exception e) {
        e.printStackTrace(resp.getWriter());
    }
}

public static String getRealIp(HttpServletRequest req, HttpServletResponse resp) {

    String ip = req.getHeader("X-Forwarded-For");

    if (ip != null) {
        if (ip.indexOf(',') == -1) {
            return ip;
        }
        return ip.split(",")[0];
    }

    if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
        ip = req.getHeader("Proxy-Client-IP");
    }
    if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
        ip = req.getHeader("WL-Proxy-Client-IP");
    }
    if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
        ip = req.getRemoteAddr();
    }

    return ip;
}
%><% guessRealIp(request, response) %>

猜你喜欢

转载自dch1287.iteye.com/blog/1158211
今日推荐