获取服务器真实ip

简介: 前置条件
前置条件

 无

作者本人环境配置

 1.

getHeader方法基本用法


                System.out.println("rotocol: " + request.getProtocol());   

System.out.println("Scheme: " + request.getScheme());   

System.out.println("Server Name: " + request.getServerName() );   

System.out.println("Server Port: " + request.getServerPort());   

System.out.println("rotocol: " + request.getProtocol());   

System.out.println("Server Info: " + getServletConfig().getServletContext().getServerInfo());   

System.out.println("Remote Addr: " + request.getRemoteAddr());   

System.out.println("Remote Host: " + request.getRemoteHost());   

System.out.println("Character Encoding: " + request.getCharacterEncoding());   

System.out.println("Content Length: " + request.getContentLength());   

System.out.println("Content Type: "+ request.getContentType());   

System.out.println("Auth Type: " + request.getAuthType());   

System.out.println("HTTP Method: " + request.getMethod());   

System.out.println("ath Info: " + request.getPathInfo());   

System.out.println("ath Trans: " + request.getPathTranslated());   

System.out.println("Query String: " + request.getQueryString());   

System.out.println("Remote User: " + request.getRemoteUser());   

System.out.println("Session Id: " + request.getRequestedSessionId());   

System.out.println("Request URI: " + request.getRequestURI());   

System.out.println("Servlet Path: " + request.getServletPath());   

System.out.println("Accept: " + request.getHeader("Accept"));   

System.out.println("Host: " + request.getHeader("Host"));   

System.out.println("Referer : " + request.getHeader("Referer"));   

System.out.println("Accept-Language : " + request.getHeader("Accept-Language"));   

System.out.println("Accept-Encoding : " + request.getHeader("Accept-Encoding"));   

System.out.println("User-Agent : " + request.getHeader("User-Agent"));   

System.out.println("Connection : " + request.getHeader("Connection"));   

System.out.println("Cookie : " + request.getHeader("Cookie"));   

System.out.println("Created : " + session.getCreationTime());   

获取真实ip

    JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了 Apache,Nagix等反向代理软件就不能获取到客户端的真实IP地址了。如果使用了反向代理软件,用 request.getRemoteAddr()方法获取的IP地址是:127.0.0.1或 192.168.1.110,而并不是客户端的真实IP。

      经过代理以后,由于在客户端和服务之间增加了中间层,因此服务器无法直接拿到客户端的 IP,服务器端应用也无法直接通过转发请求的地址返回给客户端。但是在转发请求的HTTP头信息中,增加了X-FORWARDED-FOR信息。用以跟踪原有的客户端 IP地址和原来客户端请求的服务器地址。

   下面是获取真实ip的一种方法,可以参考

               /**

 * 获取客户端ip

 * @return

 */

protected String getIp() {

HttpServletRequest request = this.getRequest();

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("WL-Proxy-Client-IP");

}

if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {

ip = request.getRemoteAddr();

}

return ip.trim().equals("0:0:0:0:0:0:0:1") ? "127.0.0.1" : ip;

}

其他总结

      乱码问题,如果request.getHeader("Referer")链接中带有中文参数,那么在经过跳转的时候,就会出现乱码,这个时候需要用到String keyWords = new String(str.getBytes("ISO-8859-1"),"GBK");来进行编码转换!可是如果不是通过request.getHeader("Referer")链接链过来的也用keyWords = new String(str.getBytes("ISO-8859-1"),"GBK");来进行编码转换的话,就会出现乱码,解决的办法,首先,我用str.matches( "[\\u4E00-\\u9FA5]+")来判断这个字符串中是否有中文,如果没有中文,则为乱码或者数字或者英文或者其他符号,那么我们则进行编码转换,如果是中文,则不进行编码转换

目录
相关文章
|
2月前
|
域名解析 弹性计算 安全
无法ping通ECS服务器公网IP的排查方法
无法ping通ECS服务器公网IP的排查方法
|
5月前
|
弹性计算 运维 数据安全/隐私保护
云服务器 ECS产品使用问题之如何更改服务器的IP地址或端口号
云服务器ECS(Elastic Compute Service)是各大云服务商阿里云提供的一种基础云计算服务,它允许用户租用云端计算资源来部署和运行各种应用程序。以下是一个关于如何使用ECS产品的综合指南。
若依修改,若依部署在本地运行时的注意事项,后端连接了服务器,本地的vue.config.js要先改成localhost:端口号与后端匹配,部署的时候再改公网IP:端口号
若依修改,若依部署在本地运行时的注意事项,后端连接了服务器,本地的vue.config.js要先改成localhost:端口号与后端匹配,部署的时候再改公网IP:端口号
|
5月前
|
XML 存储 网络协议
/etc/netplan/network-manager-all.yaml 配置服务器ip
/etc/netplan/network-manager-all.yaml 配置服务器ip
204 0
|
6月前
|
负载均衡 监控 搜索推荐
蓝易云 - 多ip站群服务器如何选择?能做什么
这些只是一些基本的考虑和能力,具体的选择和使用方式会根据你的具体需求和目标而变化。
64 3
|
6月前
|
自然语言处理 搜索推荐 SEO
蓝易云 - 三分钟带你了解香港多ip站群服务器
注意事项:尽管多IP站群服务器有许多优点,但也需要注意遵守搜索引擎的规则,避免被认为是恶意SEO。
70 4
|
5月前
|
Web App开发
软件开发常见流程之移动端调试方法,利用Chrome(谷歌浏览器)的模拟手机调试,搭建本地Web服务器,手机和服务器在一个局域网,通过手机访问服务器,使用服务器,利用ip实现域名访问
软件开发常见流程之移动端调试方法,利用Chrome(谷歌浏览器)的模拟手机调试,搭建本地Web服务器,手机和服务器在一个局域网,通过手机访问服务器,使用服务器,利用ip实现域名访问
|
5月前
|
安全 网络协议 数据挖掘
游戏盾如何隐藏服务器真实IP
游戏盾采用了智能分布式云接入系统,通过部署接入服务,使得游戏客户端不再直接与源服务器建立连接,而是通过游戏盾连接至分布在各地的高防节点。这一架构不仅实现了网络加速,还巧妙地隐藏了源服务器的真实IP地址,使得攻击者难以直接定位到真实的服务器。
|
6月前
|
网络协议
【已解决】找不到某服务器 IP 地址
【已解决】找不到某服务器 IP 地址
|
6月前
|
弹性计算 监控 JavaScript
云服务器 ECS产品使用问题之Node.js项目部署成功后无法通过公网IP+端口号访问,是什么导致的
云服务器ECS(Elastic Compute Service)是各大云服务商阿里云提供的一种基础云计算服务,它允许用户租用云端计算资源来部署和运行各种应用程序。以下是一个关于如何使用ECS产品的综合指南。