如何从HttpServletRequest中获取外网IP地址

Java 中可以通过HttpServletRequest类的getRemoteAddr();

//可能是用户真是ip也可能是代理服务器的ip
String client_ip=request.getRemoteAddr();

如果经过了中间层通过该方法无法直接获取ip,此时需要从HTTP请求的Header里面获取ip

String ip = request.getRemoteAddr();
/**
* X-Forwarded-For:简称XFF头,它代表客户端,也就是HTTP的请求端真实的IP
* 只有在通过了HTTP 代理或者负载均衡服务器时才会添加该项
* 标准格式如下:X-Forwarded-For: client_ip, proxy1_ip, proxy2_ip
* 此头是可构造的,因此某些应用中应该对获取到的ip进行验证
*/
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {ip = request.getHeader("x-forwarded-for");
}
/**
*在多级代理网络中,直接用getHeader("x-forwarded-for")可能获取到的是unknown信息
*此时需要获取代理代理服务器重新包装的HTTP头信息,
*/
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {//Apache+WebLogic搭配下出现的头ip = request.getHeader("Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknow".equalsIgnoreCase(ip)) {//Apache+WebLogic搭配下出现的头ip = request.getHeader("WL-Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {//可通过http头伪造,是由代理服务器发送的请求头ip = request.getHeader("HTTP_CLIENT_IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {//可通过http头伪造,和X-Forwarded-For格式类似,以“,"分隔ip = request.getHeader("HTTP_X_FORWARDED_FOR");
}

今天有用到,自己打号备忘!

如何从HttpServletRequest中获取外网IP地址相关推荐

  1. vue中获取外网IP的方法

    记一下如何在vue项目中获取外网IP 之前有篇文章js获取客户端真实IP记录了如何获取外网IP 那个只是在普通html页面当中的获取方法,在vue项目中就不能这么使用了. 这里介绍一种适用于vue项目 ...

  2. 如何获取外网IP地址

    1.  获取外网IP的方法: 获取外网IP地址方法: 访问网站:http://www.3322.org/dyndns/getip 访问网站:http://city.ip138.com/ip2city. ...

  3. python获取公网ip的几种方式_python获取外网ip地址的方法总结

    本文实例总结了python获取外网ip地址的方法.分享给大家供大家参考.具体如下: 一.利用脚本引擎库直接获取 import console; import web.script import ine ...

  4. 获取外网IP地址API

    1.获取外网IP地址 地址: http://pv.sohu.com/cityjson?ie=utf-8 返回结果: var returnCitySN = {"cip": " ...

  5. Python定时获取外网IP地址并发送邮件

    去年入手了树莓派4B,放在家里当服务器用.由于电信公网IP经常更换,所以需要定期获取公网IP才能连上. import os import threading from smtplib import S ...

  6. MFC C++ 获取外网IP地址

    #include <afxinet.h>//GB2312 转换成 Unicode wchar_t* GB2312ToUnicode(const char* szGBString) {UIN ...

  7. MFC 获取外网IP地址和MAC地址

    MAC地址获取: CString GetMacAddress(void) { //CString strIP,strGateWay,strSubnetMask; CString strMac; str ...

  8. [网络]_获取内外网IP地址【Auto.js】

    auto(); console.show();importClass('java.net.Inet4Address'); importClass('java.net.InetAddress'); im ...

  9. 获取外网IP,再根据IP定位城市

    根据ip定位城市对外开放的接口,有些接口不能直接用了,比如说淘宝接口.这里我用的是一个不知名的接口. 1.AddressUtil工具类 package cn.ztjz.module.audit.uti ...

最新文章

  1. nagios::plugin模块安装报错解决
  2. python closure闭包 lambda表达式
  3. poj 3487 zoj 1576 稳定婚姻
  4. 爱卡创誓记java刷钱_【178创誓记】快速升级:40到50级只需要两天的黄金刷
  5. 高级应用-路由协议配置
  6. Python项目实践:霍兰德人格分析雷达图
  7. java字符串截取指定下标位置的字符串
  8. 【空间分析】5 空间目标形态量测
  9. (转)2017 年最流行的 15 个数据科学 Python 库
  10. vue学习笔记-6-属性绑定
  11. jep3.5 java 动态公式
  12. servlet中使用db4o
  13. 斯坦福大学公开课:机器学习的动机与应用
  14. 英语单词 One 个人 2. 出生和死亡
  15. Java实现阿里短息服务发送功能
  16. 2022年软件测试行业就业发展前景,软件测试前景好吗?我该学什么?
  17. linux上使用scp命令进行上传和下载
  18. LeetCode(1292):元素和小于等于阈值的正方形的最大边长 Maximum Side Length of a Square(Java)
  19. C++11 Type-rich编程
  20. 管理类联考-英语 : 前导( 四 )

热门文章

  1. Laravel测试驱动开发--反向单元测试 1
  2. 配置theano lasagne 和 g++加速
  3. 如何把微信状态玩出新花样?30秒就能学会的超简单教程
  4. 手机碎片时间神器之epub阅读器
  5. 精心整理了一套SQL Server常用函数,速速收藏!
  6. PatchMatch Stereo(一)Slunted Windows
  7. 惠尔丰VX675切机流程2019
  8. 网络安全 payload、shellcode、exp、poc
  9. ubuntu 开启伪静态
  10. 烟气处理厂(FTP)行业调研报告 - 市场现状分析与发展前景预测