1.背景最近刷抖音发现上线了 IP 属地的功能 , 小伙伴在发表动态、发表评论以及聊天的时候 , 都会显示自己的 IP 属地信息,其核心意义是让用户更具有真实性,减少虚假欺骗事件 。正好最近本人开发获取客户端ip,做一些接口限流,黑白名单等需求功能,顺路就研究了一下怎么解析IP获取归属地问题 。
接下来,就着重讲解一下Java后端怎么实现IP归属地的功能,其实只需要以下两大步骤:
2.获取客户端ip接口做过web开发都知道 , 无论移动端还是pc端的请求接口都会被封装成为一个HttpServletRequest对象,该对象包含了客户端请求信息包括请求的地址 , 请求的参数,提交的数据等等 。
如果服务器直接把IP暴漏出去 , 那么request.getRemoteAddr()就能拿到客户端ip 。
但目前流行的架构中,基本上服务器都不会直接把自己的ip暴漏出去,一般前面还有一层或多层反向代理,常见的nginx居多 。加了代理后,相当于服务器和客户端中间还有一层,这时·request.getRemoteAddr()拿到的就是代理服务器的ip了,并不是客户端的ip 。所以这种情况下,一般会在转发头上加X-Forwarded-For等信息,用来跟踪原始客户端的ip 。
X-Forwarded-For: 这是一个 Squid 开发的字段,只有在通过了HTTP代理或者负载均衡服务器时才会添加该项 。格式为X-Forwarded-For:client1,proxy1,proxy2,一般情况下,第一个ip为客户端真实ip , 后面的为经过的代理服务器ip 。上面的代码注释也说的很清楚 , 直接截取拿到第一个ip 。Proxy-Client-IP/WL- Proxy-Client-IP: 这个一般是经过apache http服务器的请求才会有,用apache http做代理时一般会加上Proxy-Client-IP请求头 , 而WL-Proxy-Client-IP是他的weblogic插件加上的头 。这种情况也是直接能拿到 。HTTP_CLIENT_IP: 有些代理服务器也会加上此请求头 。X-Real-IP: nginx一般用这个 。
但是在日常开发中,并没有规范规定用以上哪一个头信息去跟踪客户端 , 所以都有可能,只能一一尝试,直到获取到为止 。代码如下:
ini
复制代码
@Slf4jpublic class IpUtils { private static final String UNKNOWN_VALUE = http://www.wokk.cn/“unknown”
以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!
「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助:- 关于离婚协议书怎么写 离婚协议书怎么写
- 二十首关于冬至的诗词 冬至的古诗
- 翡翠手镯保养小知识 关于翡翠手镯知识
- 关于劳动节的由来 劳动节的由来
- 关于ecco这个品牌你了解多少 ECCO什么牌子
- 关于助听器价格的说明 一个助听器大约要多少钱
- 元旦放假安排 元旦
- 8k纸尺寸是多少? 8K的纸是多大的纸
- 如何高效申请抖音公会
- 如何利用抖音网页版打开创作者服务平台