我需要在JSP页面中获取客户端的IP地址.我尝试了以下方法:
request.getRemoteAddr()
request.getHeader("X_FORWARDED_FOR")
request.getHeader("HTTP_CLIENT_IP")
request.getHeader("WL-Proxy-Client-IP")
request.getHeader("Proxy-Client-IP")
request.getHeader("REMOTE_ADDR")
Run Code Online (Sandbox Code Playgroud)
但是,这些方法都没有返回所需的IP地址.如何在JSP页面中获取客户端的IP地址?
小智 9
要获取客户端的IP地址,我使用了以下方法
<% 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.getHeader("HTTP_CLIENT_IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("HTTP_X_FORWARDED_FOR");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
%>
Run Code Online (Sandbox Code Playgroud)
希望这有帮助,请留下反馈.
<%
out.print( request.getRemoteAddr() );
out.print( request.getRemoteHost() );
%>
Run Code Online (Sandbox Code Playgroud)
如果客户端在代理后面,您可能无法获得真实的客户端 IP,您将获得代理的 IP,而不是客户端。但是,代理可能会在特殊的 HTTP 标头中包含请求的客户端 IP。
<%
out.print( request.getHeader("x-forwarded-for") );
%>
Run Code Online (Sandbox Code Playgroud)
你使用像apache代理这样的反向代理吗? http://httpd.apache.org/docs/2.2/mod/mod_proxy.html
当以反向代理模式运行时(例如,使用 ProxyPass 指令),mod_proxy_http 添加几个请求标头,以便将信息传递到源服务器。这些标头是:
X-Forwarded-For
The IP address of the client.
X-Forwarded-Host
The original host requested by the client in the Host HTTP request header.
X-Forwarded-Server
The hostname of the proxy server.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
31280 次 |
| 最近记录: |