欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

介紹

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

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

方法一

此方法獲取真實(shí)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);

總結(jié)

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

相關(guān)文章

  • Java之Spring簡單的讀取和存儲對象

    Java之Spring簡單的讀取和存儲對象

    這篇文章主要介紹了Spring的讀取和存儲對象,獲取 bean 對象也叫做對象裝配,是把對象取出來放到某個類中,有時候也叫對象注?,想進(jìn)一步了解的同學(xué)可以參考本文
    2023-04-04
  • QTabWidget標(biāo)簽實(shí)現(xiàn)雙擊關(guān)閉的方法(推薦)

    QTabWidget標(biāo)簽實(shí)現(xiàn)雙擊關(guān)閉的方法(推薦)

    這篇文章主要介紹了QTabWidget標(biāo)簽實(shí)現(xiàn)雙擊關(guān)閉的方法(推薦)的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-06-06
  • SpringBoot2.0集成WebSocket實(shí)現(xiàn)后臺向前端推送信息

    SpringBoot2.0集成WebSocket實(shí)現(xiàn)后臺向前端推送信息

    這篇文章主要介紹了SpringBoot2.0集成WebSocket實(shí)現(xiàn)后臺向前端推送信息,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • maven在IDEA下載依賴包速度慢的問題解決

    maven在IDEA下載依賴包速度慢的問題解決

    這篇文章主要介紹了maven在IDEA下載依賴包速度慢的問題解決方案,本文通過圖文結(jié)合的形式給大家分享解決方案,供大家參考,需要的朋友可以參考下
    2024-01-01
  • MyBatis Plus整合Redis實(shí)現(xiàn)分布式二級緩存的問題

    MyBatis Plus整合Redis實(shí)現(xiàn)分布式二級緩存的問題

    Mybatis內(nèi)置的二級緩存在分布式環(huán)境下存在分布式問題,無法使用,但是我們可以整合Redis來實(shí)現(xiàn)分布式的二級緩存,這篇文章給大家介紹MyBatis Plus整合Redis實(shí)現(xiàn)分布式二級緩存,感興趣的朋友跟隨小編一起看看吧
    2023-11-11
  • java8 stream的分組功能實(shí)例介紹

    java8 stream的分組功能實(shí)例介紹

    這篇文章主要給大家介紹了關(guān)于java8 stream的分組功能的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用java8具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • Java遞歸算法遍歷部門代碼示例

    Java遞歸算法遍歷部門代碼示例

    這篇文章主要介紹了Java遞歸算法遍歷部門代碼示例,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • 如何在springboot中引入?yún)?shù)校驗(yàn)

    如何在springboot中引入?yún)?shù)校驗(yàn)

    一般我們判斷前端傳過來的參數(shù),需要對某些值進(jìn)行判斷,是否滿足條件,而springboot相關(guān)的參數(shù)校驗(yàn)注解,可以解決我們這個問題,本文給大家介紹如何在springboot中引入?yún)?shù)校驗(yàn),感興趣的朋友一起看看吧
    2023-12-12
  • Java向上轉(zhuǎn)型和向下轉(zhuǎn)型實(shí)例解析

    Java向上轉(zhuǎn)型和向下轉(zhuǎn)型實(shí)例解析

    這篇文章主要介紹了Java向上轉(zhuǎn)型和向下轉(zhuǎn)型實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-02-02
  • JAVA異常信息Exception?e及e的相關(guān)方法解讀

    JAVA異常信息Exception?e及e的相關(guān)方法解讀

    這篇文章主要介紹了JAVA異常信息Exception?e及e的相關(guān)方法解讀,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06

最新評論