思路:1.reqest对象获取客户端IP,2.第三方接口获取IP属地

新建springboot工程

选择spring web

在com.example.demo包下新建utils工具类包,并新建IpUtil工具类代码如下:

package com.example.demo.utils;import javax.servlet.http.HttpServletRequest;public class IpUtil {static final String UNKNOWN = "unknown";public static String getIpAddr(HttpServletRequest request) {if (request == null) {return UNKNOWN;}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("X-Forwarded-For");}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("X-Real-IP");}if (ip == null || ip.length() == 0 || UNKNOWN.equalsIgnoreCase(ip)) {ip = request.getRemoteAddr();}System.out.println(ip);return "0:0:0:0:0:0:0:1".equals(ip) ? "127.0.0.1" : ip;}}

在com.example.demo包下新建utils工具类包,并新建TestController类代码如下:

package com.example.demo.web;import com.example.demo.utils.IpUtil;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import javax.servlet.http.HttpServletRequest;
@RestController
public class TestController {@RequestMapping(value = "")String getIp(HttpServletRequest request){return IpUtil.getIpAddr(request);}
}

启动工程:

控制台输出日志:

浏览器访问http://localhost:8080

浏览器返回如图

查看本机局域网地址并确定手机或其他设备与本机在同一局域网命令行输入ipconfig

查看本机ip

用手机访问http://192.168.1.210:8080

返回如下页面

开启nginx转发:编辑nginx.conf

location / {root    html;
#转发proxy_pass   http://127.0.0.1:8080/;index  index.html index.htm;}

双击启动nginx

用手机访问http://192.168.1.210返回127.0.0.1

ip地址错误: 解决方法-更改nginx.conf

location / {root    html;proxy_set_header Host $http_host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header REMOTE-HOST $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_pass   http://127.0.0.1:8080/;index  index.html index.htm;}

重启nginx

springboot获取客户端IP及IP归属地相关推荐

  1. JavaWeb 获取客户端的真实IP地址

    通常我们在JavaWeb中获取客户端IP地址只需要使用request.getRemoteAddr();方法即可 如果前端使用了Nginx等反向代理的话,我们使用request.getRemoteAdd ...

  2. 获取客户端外网IP,省份,城市,运营商

    /// <summary>     /// 获取客户端外网IP,省份,城市,运营商     /// 2012年12月18日 15:07     /// </summary>   ...

  3. Android 获取客户端外网IP和服务端IP

    项目组最近添加新需求,要获取客户端和服务端IP,削微研究了一下,总结如下: 1.获取客户端外网IP(为啥不要内网,因为那玩意没鸟用,外网IP起码能确定客户端的地区位置) 目前只有一种方法可以获取:发送 ...

  4. 通过Request获取客户端的真实IP

    我们在做项目的时候经常需要获取客户端的真实ip去进行判断,为此搜索了相关文章,以下这个讲解的比较明白,直接拿来 https://blog.csdn.net/yin_jw/article/details ...

  5. springboot 获取客户端ip_JAVA如何获取客户端IP地址和MAC地址

    本文介绍了JAVA如何获取客户端IP地址和MAC地址 ,分享给大家,具体如下: 1.获取客户端IP地址 public String getIp(HttpServletRequest request) ...

  6. SpringBoot 获取客户端 ip

    /*** 获取客户端ip地址* @param request* @return*/public static String getCliectIp(HttpServletRequest request ...

  7. PHP获取客户端和服务器IP地址

    1 /** 2 * 获取客户端IP地址 3 * @return string 4 */ 5 function get_client_ip() { 6 if(getenv('HTTP_CLIENT_IP ...

  8. 如何获取客户端的真实IP

    原文地址:http://blog.csdn.net/zhangyaoming2004/article/details/6792695 问题引出: <hr/> 在JSP里,获取客户端的IP地 ...

  9. PHP获取客户端的真实IP

    REMOTE_ADDR只能获取访问者本地连接中设置的IP,如中南民族大学校园网中自己设置的10.X.XXX.XXX系列IP,而这个函数获取的是局域网网关出口的IP地址, 如果访问者使用代理服务器,将不 ...

  10. 获取php服务器ip地址,PHP获取客户端和服务器IP地址

    =/** * 获取客户端IP地址 * @return string */ function get_client_ip() { if(getenv('HTTP_CLIENT_IP')){ $clien ...

最新文章

  1. [短彩信]C#短彩信模块开发设计(1)——架构
  2. 想要自学深度学习?不用GPU,浏览器就够了
  3. 神经网络变学习率算法代码_机器学习算法之神经网络
  4. 实现IFrame的自适应高度
  5. SpringBoot2.0之二 新建RESTfull风格项目
  6. java开发之分页查询
  7. jquery 日期选择器
  8. Ajax异步请求阻塞情况的解决办法(asp.net MVC Session锁的问题)
  9. TroubleShooting Hyper-V 虚拟机因磁盘配置问题无法启动
  10. python通用数据库连接_python-sqlalchemy 使用学习记录之基础连接数据库安装接篇...
  11. 探讨如何在有着1000万条数据的MS SQL SERVER数据库中实现快速的数据提取和数据分页...
  12. steam服务器维护6月28,绝地求生6月28日维护更新公告 绝地求生6月28日更新内容汇总...
  13. linux 文本编辑器Vim/Vi详细介绍
  14. 自然语言处理简明教程——序言、第一章
  15. 显示器尺寸对照表_求解显示器屏幕尺寸对照表一般是多少?
  16. 有道词典 PC端 手机端 单词 背 个数 不同步 解决
  17. 笔记本 续航测试软件,续航测试:较高强度运行状态_笔记本评测-中关村在线
  18. 黑金花大理石_不同产地的黑金花大理石有哪些特点?
  19. 计算机组成原理知识点汇总(考研用)——第二章:数据的表示和运算
  20. go开发gui还是python开发gui_golang为什么没有官方的gui包?

热门文章

  1. HF-LPX70_SDK提示. sh: 1: ././tools/lzma: not found 解决办法
  2. 计算机isas测试,SAS硬盘测试:15,000转对决10,000转
  3. 第二章:x264视频制作meGUI工具安装
  4. 润乾报表导出pdf问题
  5. win10服务器怎么连接显示器不亮,win10开机后显示器不亮如何解决_win10开机后显示器不亮的处理方法...
  6. C语言如何区别素数和合数,怎么快速记住100以内的素数和合数
  7. [人工智能-综述-10]:模型评估 - 常见的模型评估指标与方法大全、汇总
  8. 【理科】2020年高考数学(第十二章复数、算法、推理与证明)考点与题型全归纳
  9. 离散数学——基础推理
  10. Java实现局域网流量监控