最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java如何獲取發(fā)送請求的電腦的IP地址

 更新時間:2024年11月29日 09:00:38   作者:inexaustible  
文章介紹了如何通過HttpServletRequest獲取客戶端IP地址,特別是當(dāng)客戶端通過代理訪問時,如何使用x-forwarded-for頭來獲取真實的IP地址

介紹

客戶端所有的請求信息都可以通過HttpServletRequest獲得,獲取客戶端ip可以通過getRemoteAddr()獲取。

但是如果客戶端是通過代理訪問我們的服務(wù)器,那么getRemoteAddr()獲取到的ip就很有可能不是真實的ip,這時候我們可以通過請求頭里的x-forwarded-for來獲取真實的ip,請求每經(jīng)一次代理,都會在后面拼接該代理的ip,以逗號分隔。

方法一

此方法獲取真實IP(本機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);

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java Map 在put值時value值不被覆蓋的解決辦法

    Java Map 在put值時value值不被覆蓋的解決辦法

    這篇文章主要介紹了Java Map 在put值時value值不被覆蓋的解決辦法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-04-04
  • java判斷字符串中是否包含中文并過濾中文

    java判斷字符串中是否包含中文并過濾中文

    這篇文章主要為大家詳細(xì)介紹了java判斷字符串中是否包含中文,并過濾掉中文,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • 最新評論

    余姚市| 和田市| 中江县| 保德县| 叶城县| 甘孜县| 秦皇岛市| 老河口市| 镇安县| 呈贡县| 庆安县| 墨脱县| 嘉黎县| 阿城市| 钦州市| 城口县| 攀枝花市| 彰武县| 大方县| 离岛区| 庆安县| 台安县| 梅州市| 温泉县| 汾阳市| 锡林浩特市| 赤峰市| 纳雍县| 睢宁县| 手游| 广汉市| 黄冈市| 伊宁市| 东兰县| 泰安市| 手游| 海口市| 银川市| 夏邑县| 青龙| 巴彦县|