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

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

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

介紹

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

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

方法一

此方法獲取真實(shí)IP(本機(jī)IP并不是127.0.0.1)

獲取發(fā)送請(qǐng)求的電腦的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 {

    /**
     * 獲取請(qǐng)求的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é)

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

相關(guān)文章

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

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

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

    java判斷字符串中是否包含中文并過(guò)濾中文

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

    囊谦县| 屏东市| 通州区| 临夏县| 荔波县| 黎城县| 温泉县| 博爱县| 寿阳县| 华坪县| 黑河市| 南城县| 黄陵县| 建平县| 罗田县| 疏勒县| 二连浩特市| 囊谦县| 阿克苏市| 金门县| 镇雄县| 台北县| 长乐市| 宜州市| 鹤庆县| 棋牌| 宿州市| 沅陵县| 安岳县| 丁青县| 秦安县| 玛纳斯县| 阿坝县| 萝北县| 巨野县| 禹州市| 延庆县| 衡南县| 会昌县| 辉县市| 阿合奇县|