0:0:0:0:0:0:0:1是ipv6的表现形式,对应ipv4来说相当于127.0.0.1,也就是本机
如果项目部署在本机win7系统,访问时是通过 localhost 来访问,
用java获取ip地址可能会出现该问题,这时获取的ip将是 0:0:0:0:0:0:0:1
要是机器在局域网中,访问时使用自己的ip访问,如 我的ip是 :192.168.123.156
访问url:http://192.168.123.156:8080/test
这时候请求会经过路由器转发,所以服务器获取的就是本机的局域网内ip,在java中获取的ip就是 192.168.123.156了
public static String getIP(HttpServletRequest request) {
String ip = request.getHeader("x-forwarded-for");
if (!checkIP(ip)) {
ip = request.getHeader("Proxy-Client-IP");
}
if (!checkIP(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP");
}
if (!checkIP(ip)) {
ip = request.getRemoteAddr();
}
return ip;
}
private static boolean checkIP(String ip) {
if (ip == null || ip.length() == 0 || "unkown".equalsIgnoreCase(ip)
|| ip.split(".").length != 4) {
return false;
}
return true;
}
request.getRemoteAddr() 获取的值为0:0:0:0:0:0:0:1的原因及解决办法
最近在进行web开发时,在jsp页面获取服务器ip时,遇到了request.getRemoteAddr()获取的值为0:0:0:0:0:0:0:1,这是为什么呢,照道理讲,应该是127.0.0.1才对,为什么这个获取的值变成了ipv6了呢,而且我发现这种情况只有在服务器和客户端都在同一台电脑上才会出现(例如用localhost访问的时候才会出现),后来上网查了查原因,原来是/etc/hosts这个东西作怪(在windows上应该是C:\Windows\System32\drivers\etc\hosts这个文件),只需要注释掉文件中的 # ::1 localhost 这一行即可解决问题。另外localhost这个文件很有用,这里你可以添加自己的条目,例如添加 192.168.0.212 myweb 这样子,在浏览器中原来只能使用192.168.0.212来访问的,并可以使用myweb来进行替换。
如果还不能解决,本机访问的时候用127.0.0.1或本机ip代替localhost即可解决
分享到:
相关推荐
java获取访问者的IP地址,适用于web开发。注意:如果是本地测试的话,通过localhost访问的时候ip显示为0:0:0:0:0:0:0:1,这代表的是本地,可以将localhost换成127.0.0.1时,显示的是当前访问的ip地址
### 使用Java获取访问者真实IP地址 在现代Web开发中,获取客户端的真实IP地址是非常重要的。这不仅有助于网站统计分析,还可以用于安全控制、地域限制等功能。然而,在使用如Apache、Squid等反向代理服务器的情况下...
### Java获取客户端真实IP的两种方法详解 #### 一、问题背景 在Web开发中,经常需要获取客户端的真实IP地址来进行一系列的操作,比如统计访问来源、进行地理定位、安全防护等。然而,在实际应用场景中,客户端请求...
需要注意的是,`X-Forwarded-For`头部可能存在被篡改的风险,因此在某些安全敏感的应用场景中,直接依赖这个头部获取IP可能不够安全。此外,不同的反向代理服务器可能有特定的配置,如Squid的`forwarded_for`选项,...
总的来说,通过Java获取IP所在地区涉及到网络编程、二进制文件解析以及数据库操作等多个技术点。正确理解和实现这一过程,可以帮助我们在各种应用场景下,如网站访问统计、网络安全分析等,更好地处理与IP地址相关的...
然而,在Linux服务器上获取IP地址却存在一些问题。在本文中,我们将详细介绍Java获取Linux服务器上的IP操作,包括Linux服务器上的网络接口、回环接口、获取IP地址的方法等。 Linux服务器上的网络接口 在Linux...
在Java编程中,获取IP地址是一项常见的任务,特别是在网络编程和服务器开发中。这个"java IP地址工具类"是为了解决这个问题而设计的。它提供了便捷的方法来获取和处理IP地址,尤其对于获取客户端IP地址在Web应用中至...
### Java获取IP地址知识点解析 在本篇文章中,我们将深入探讨如何使用Java语言来获取IP地址。这是一项在网络编程中非常基础且重要的技能,能够帮助开发者了解客户端或服务器的网络位置信息。以下是对给定文件中的...
总结来说,Java获取公网IP地址主要依赖于网络请求和第三方服务的配合。`ExternalIpAddressFetcher.java` 类提供了一个简单的方法来实现这个功能,通过向Amazon AWS提供的公共IP检查服务发起HTTP请求,并解析返回的IP...
获取请求头中ip,不同方法:request.getRemoteAddr(),request.getHeader("x-forwarded-for")
#### 三、在Linux环境下获取IP地址 在Linux环境中,可以通过`InetAddress`类来获取主机的IP地址。但是需要注意的是,对于多网卡的情况,需要遍历所有网络接口来找到正确的IP地址。 **示例代码**: ```java public...
总结,Java获取IP地址并返回国家、地区和城市名称的过程主要包括:获取IP地址、加载QQwry数据库、查询IP信息以及解析查询结果。通过这个过程,开发者可以为网络应用程序增加更丰富的地理定位功能。不过需要注意,这...
### Java获取客户端真实IP地址详解 在Web开发中,获取客户端的真实IP地址是一个常见的需求,尤其是在需要进行地理位置定位、安全审计、流量统计等场景下。然而,在存在反向代理服务器的环境中,传统的`request....
### Java 获取客户端 IP 地址 在 Web 开发中,获取客户端 IP 地址是一项非常重要的功能,尤其是在需要记录用户活动、实现地理位置定位或者进行安全验证等场景下。Java 提供了多种方式来获取客户端的 IP 地址,其中...
另外,还可以使用在线API服务,如IPInfoDB、IPGeolocation等,通过HTTP请求获取IP的地理位置信息。这种方式简单易用,但可能需要注册并获取API密钥,且在高并发情况下可能受限于调用次数。 总结,Java中根据IP获取...
下面将详细介绍如何使用Java获取计算机名和IP地址。 首先,我们来看如何获取计算机名。计算机名通常指的是主机在网络中的标识符,可以通过`java.lang`包中的`InetAddress`类来获取。以下是一个简单的示例: ```...
在Java Web开发中,IntelliJ IDEA是一款广泛使用的集成开发环境(IDE),它为Java程序员提供了强大的代码编辑、调试和项目管理功能。当我们构建一个基于Servlet的Web应用程序时,有时需要获取访问用户的真实IP地址,...
`InetAddress`提供了`getByName()`方法,可以将字符串形式的IP地址转换为`InetAddress`对象,然后通过`getHostAddress()`方法获取IP地址,`getHostName()`方法则能获取主机名,但这些方法无法直接得到国家或地区的...
在这个例子中,`ServerHttpRequest`的`getRemoteAddress().getHostString()`方法用于获取IP地址。同样,如果在反向代理环境中,我们需要检查`X-Forwarded-For`头来获取真实的IP: ```java String forwardedFor = ...
使用java获取所在局域网的所有在用ip,可以检测目前有哪些ip在使用