介紹
客戶端所有的請求信息都可以通過HttpServletRequest獲得,獲取客戶端ip可以通過getRemoteAddr()獲取。文章來源:http://www.zghlxwxcb.cn/news/detail-569814.html
但是如果客戶端是通過代理訪問我們的服務(wù)器,那么getRemoteAddr()獲取到的ip就很有可能不是真實的ip,這時候我們可以通過請求頭里的x-forwarded-for來獲取真實的ip,請求每經(jīng)一次代理,都會在后面拼接該代理的ip,以逗號分隔。文章來源地址http://www.zghlxwxcb.cn/news/detail-569814.html
方法一:此方法獲取真實IP(本機(jī)IP并不是127.0.0.1)
獲取發(fā)送請求的電腦的IP地址,并返回
package com.lc.z.common.utils;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder;
import javax.servlet.http.HttpServletRequest;
public class IpUtil {
/**
* 獲取請求的ip
*/
public static String getRequestIp() {
RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
// 從獲取RequestAttributes中獲取HttpServletRequest的信息
HttpServletRequest request = (HttpServletRequest) requestAttributes.resolveReference(RequestAttributes.REFERENCE_REQUEST);
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();
}
return ip;
}
}
方法二:
RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
HttpServletRequest request = ((ServletRequestAttributes) requestAttributes).getRequest();
String clientIP = ServletUtil.getClientIP(request);
// 本地的服務(wù)輸出 IP:127.0.0.1
System.out.println("IP:"+ clientIP);
到了這里,關(guān)于使用Java獲取發(fā)送請求的電腦的IP地址的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!