如何从HttpServletRequest中获取外网IP地址
如何从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地址相关推荐
- vue中获取外网IP的方法
记一下如何在vue项目中获取外网IP 之前有篇文章js获取客户端真实IP记录了如何获取外网IP 那个只是在普通html页面当中的获取方法,在vue项目中就不能这么使用了. 这里介绍一种适用于vue项目 ...
- 如何获取外网IP地址
1. 获取外网IP的方法: 获取外网IP地址方法: 访问网站:http://www.3322.org/dyndns/getip 访问网站:http://city.ip138.com/ip2city. ...
- python获取公网ip的几种方式_python获取外网ip地址的方法总结
本文实例总结了python获取外网ip地址的方法.分享给大家供大家参考.具体如下: 一.利用脚本引擎库直接获取 import console; import web.script import ine ...
- 获取外网IP地址API
1.获取外网IP地址 地址: http://pv.sohu.com/cityjson?ie=utf-8 返回结果: var returnCitySN = {"cip": " ...
- Python定时获取外网IP地址并发送邮件
去年入手了树莓派4B,放在家里当服务器用.由于电信公网IP经常更换,所以需要定期获取公网IP才能连上. import os import threading from smtplib import S ...
- MFC C++ 获取外网IP地址
#include <afxinet.h>//GB2312 转换成 Unicode wchar_t* GB2312ToUnicode(const char* szGBString) {UIN ...
- MFC 获取外网IP地址和MAC地址
MAC地址获取: CString GetMacAddress(void) { //CString strIP,strGateWay,strSubnetMask; CString strMac; str ...
- [网络]_获取内外网IP地址【Auto.js】
auto(); console.show();importClass('java.net.Inet4Address'); importClass('java.net.InetAddress'); im ...
- 获取外网IP,再根据IP定位城市
根据ip定位城市对外开放的接口,有些接口不能直接用了,比如说淘宝接口.这里我用的是一个不知名的接口. 1.AddressUtil工具类 package cn.ztjz.module.audit.uti ...
最新文章
- nagios::plugin模块安装报错解决
- python closure闭包 lambda表达式
- poj 3487 zoj 1576 稳定婚姻
- 爱卡创誓记java刷钱_【178创誓记】快速升级:40到50级只需要两天的黄金刷
- 高级应用-路由协议配置
- Python项目实践:霍兰德人格分析雷达图
- java字符串截取指定下标位置的字符串
- 【空间分析】5 空间目标形态量测
- (转)2017 年最流行的 15 个数据科学 Python 库
- vue学习笔记-6-属性绑定
- jep3.5 java 动态公式
- servlet中使用db4o
- 斯坦福大学公开课:机器学习的动机与应用
- 英语单词 One 个人 2. 出生和死亡
- Java实现阿里短息服务发送功能
- 2022年软件测试行业就业发展前景,软件测试前景好吗?我该学什么?
- linux上使用scp命令进行上传和下载
- LeetCode(1292):元素和小于等于阈值的正方形的最大边长 Maximum Side Length of a Square(Java)
- C++11 Type-rich编程
- 管理类联考-英语 : 前导( 四 )