已备案网站更换域名,福州企业网站推广定制,产品详情页模板免费,wordpress调用文章位置当处理来自客户端的请求时#xff0c;尤其是在存在代理服务器的情况下#xff0c;可能需要考虑多种HTTP请求头#xff0c;以尽可能准确地获取用户的真实IP地址。以下是考虑了X-Forwarded-For、Proxy-Client-IP、WL-Proxy-Client-IP、HTTP_CLIENT_IP、HTTP_X_FORWARDED_FOR的…当处理来自客户端的请求时尤其是在存在代理服务器的情况下可能需要考虑多种HTTP请求头以尽可能准确地获取用户的真实IP地址。以下是考虑了X-Forwarded-For、Proxy-Client-IP、WL-Proxy-Client-IP、HTTP_CLIENT_IP、HTTP_X_FORWARDED_FOR的请求头的代码
import javax.servlet.http.HttpServletRequest;public class NetworkUtil {public static String getRealIpAddress(HttpServletRequest request) {String[] headerNames {X-Forwarded-For,Proxy-Client-IP,WL-Proxy-Client-IP,HTTP_CLIENT_IP,HTTP_X_FORWARDED_FOR};String ipAddress null;for (String header : headerNames) {ipAddress request.getHeader(header);if (ipAddress ! null !ipAddress.isEmpty() !unknown.equalsIgnoreCase(ipAddress)) {break;}}if (ipAddress null || ipAddress.isEmpty() || unknown.equalsIgnoreCase(ipAddress)) {ipAddress request.getRemoteAddr();}// 其中X-Forwarded-For可能含有多个IP地址第一个非unknown的有效IP字符串即为用户的真实IPif (ipAddress ! null ipAddress.length() 15) { // xxx.xxx.xxx.xxx.length() 15if (ipAddress.indexOf(,) 0) {ipAddress ipAddress.substring(0, ipAddress.indexOf(,)).trim();}}return ipAddress;}
}