springboot獲取訪問的ip地址的實(shí)現(xiàn)步驟
1、用shiro的方式獲取到的是127.0.0.1,或者用request.getRemoteAddr()也會是127.0.0.1(這個與瀏覽器地址有關(guān))
HttpServletRequest request; request.getRemoteAddr();
shiro
/**
* 獲取ip
*
* @return
*/
private String getIp() {
Subject subject = SecurityUtils.getSubject();
String host = subject.getSession().getHost();
return host;
}
發(fā)現(xiàn)全部是127.0.0.1
2、網(wǎng)上有個兄弟寫了一個方法,測試以后發(fā)現(xiàn)是可以獲取到ip的,在本機(jī)上測試成功,地址欄上面輸入Ip:port的形式訪問。
public static String getIpAddr(HttpServletRequest request) {
String ipAddress = null;
try {
ipAddress = request.getHeader("x-forwarded-for");
if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
ipAddress = request.getHeader("Proxy-Client-IP");
}
if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
ipAddress = request.getHeader("WL-Proxy-Client-IP");
}
if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
ipAddress = request.getRemoteAddr();
if (ipAddress.equals("127.0.0.1")) {
InetAddress inet = null;
try {
inet = InetAddress.getLocalHost();
} catch (UnknownHostException e) {
e.printStackTrace();
}
ipAddress = inet.getHostAddress();
}
}
// 對于通過多個代理的情況,第一個IP為客戶端真實(shí)IP,多個IP按照','分割
if (ipAddress != null && ipAddress.length() > 15) { // "***.***.***.***".length()
// = 15
if (ipAddress.indexOf(",") > 0) {
ipAddress = ipAddress.substring(0, ipAddress.indexOf(","));
}
}
} catch (Exception e) {
ipAddress = "";
}
return ipAddress;
}
不是在controller調(diào)用也是可以的,也就是沒有HttpServletRequest request參數(shù)情況下:
HttpServletRequest request = ((ServletRequestAttributes) (RequestContextHolder.currentRequestAttributes())).getRequest();
System.out.println("ip:"+IpUtil.getIpAddr(request));這樣就有ip地址了。
到此這篇關(guān)于springboot獲取訪問的ip地址的實(shí)現(xiàn)步驟的文章就介紹到這了,更多相關(guān)springboot獲取訪問ip地址內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- springboot實(shí)現(xiàn)獲取客戶端IP地址的示例代碼
- SpringBoot項(xiàng)目中使用OkHttp獲取IP地址的示例代碼
- SpringBoot項(xiàng)目中獲取IP地址的實(shí)現(xiàn)示例
- springboot如何獲取請求者的ip地址
- SpringBoot如何獲取客戶端的IP地址
- SpringBoot實(shí)現(xiàn)IP地址解析的示例代碼
- SpringBoot獲取客戶端的IP地址的實(shí)現(xiàn)示例
- SpringBoot整合Ip2region獲取IP地址和定位的詳細(xì)過程
- springboot獲取真實(shí)ip地址的方法實(shí)例
- springboot 獲取訪問接口的請求的IP地址的實(shí)現(xiàn)
相關(guān)文章
SpringBoot集成Sharding-JDBC實(shí)現(xiàn)分庫分表方式
這篇文章主要介紹了SpringBoot集成Sharding-JDBC實(shí)現(xiàn)分庫分表方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-07-07
Java中g(shù)etSuperclass()方法的使用與原理解讀
文章介紹了Java中的getSuperclass()方法,該方法用于獲取一個類的直接父類,通過理解其使用方式、工作原理以及實(shí)際應(yīng)用場景,可以更好地利用反射機(jī)制處理類的繼承關(guān)系,實(shí)現(xiàn)動態(tài)類型檢查、類加載以及序列化等功能2025-01-01
java 垃圾回收機(jī)制以及經(jīng)典垃圾回收器詳解
這篇文章主要介紹了java 垃圾回收機(jī)制以及經(jīng)典垃圾回收器詳解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-07-07
SpringBoot任意版本集成Swagger各種版本的操作指南
在學(xué)習(xí)Swagger生成API文檔的時候經(jīng)常會遇到問題,而目前市面上大部分技術(shù)分享者的SpringBoot版本并沒和我們的同步,導(dǎo)致一些一模一樣的代碼,在我們的項(xiàng)目上卻無法使用,這是一個經(jīng)常性的問題,本文章就旨在和大家搞定SpringBoot任意版本集成Swagger各種版本2024-07-07
SpringBoot定時任務(wù)實(shí)現(xiàn)數(shù)據(jù)同步的方法
業(yè)務(wù)需求是,通過中臺調(diào)用api接口獲得,設(shè)備數(shù)據(jù),要求現(xiàn)實(shí)設(shè)備數(shù)據(jù)的同步,這篇文章主要介紹了SpringBoot定時任務(wù)實(shí)現(xiàn)數(shù)據(jù)同步的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-08-08
解決@Validated注解無效,嵌套對象屬性的@NotBlank無效問題
這篇文章主要介紹了解決@Validated注解無效,嵌套對象屬性的@NotBlank無效問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-10-10
繼承jpa?Repository?寫自定義方法查詢實(shí)例
這篇文章主要介紹了繼承jpa?Repository?寫自定義方法查詢實(shí)例,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12

