- 浏览: 86194 次
- 性别:
- 来自: 上海
文章分类
最新评论
Tomcat Servlet request.getRemoteAddr()所得值为0:0:0:0:0:0:0:1
- 博客分类:
- CoreJava
环境:
tomcat5.6
JSP
UTF-8
IP协议:IPv4,IPv6
服务器和访问者在同一机器上。
问题描述
上传文件时,为了避免文件名重复,打算利用IP地址+时间戳的方式和给文件命名。但是,从本机上访问本机服务器时,利用request.getRemoteAddr()函数获取IP地址,得到的是0:0:0:0:0:0:0:1。因为是按IPv4的方式和解析的,所以使得保存文件失败。
[b]原因及解决方案[/b]
因为机器上启用的IPv6协议,所以在对localhost进DNS解析时,得到的是IPv6形式的本机地址0:0:0:0:0:0:0:1。因此在利用http://localhost:8080/demo/ 访问时,request.getRemoteAddr()函数才会得到上面的结果。
可以修改hosts文件。位置:C:\Windows\System32\drivers\etc。添加上一句127.0.0.1 localhost,这样request.getRemoteAddr()函数得到的将是127.0.0.1。
此外,利用别的机器来访问本机服务器,则不会出现上述上问题,能够取得它的IPv4地址。对于网上所说的因为tomcat的反向代理,使得request.getRemoteAddr()无法获得客户端真实IP的问题,我目前还不是很理解。
关于hosts文件
hosts文件相当于一个位于本地的IP地址到域名的映射文件,可以提供DNS解析。如果想访问的网站被域名污染(域名劫持),可以预先将IP,域名对写入hosts文件。
tomcat5.6
JSP
UTF-8
IP协议:IPv4,IPv6
服务器和访问者在同一机器上。
问题描述
上传文件时,为了避免文件名重复,打算利用IP地址+时间戳的方式和给文件命名。但是,从本机上访问本机服务器时,利用request.getRemoteAddr()函数获取IP地址,得到的是0:0:0:0:0:0:0:1。因为是按IPv4的方式和解析的,所以使得保存文件失败。
[b]原因及解决方案[/b]
因为机器上启用的IPv6协议,所以在对localhost进DNS解析时,得到的是IPv6形式的本机地址0:0:0:0:0:0:0:1。因此在利用http://localhost:8080/demo/ 访问时,request.getRemoteAddr()函数才会得到上面的结果。
可以修改hosts文件。位置:C:\Windows\System32\drivers\etc。添加上一句127.0.0.1 localhost,这样request.getRemoteAddr()函数得到的将是127.0.0.1。
此外,利用别的机器来访问本机服务器,则不会出现上述上问题,能够取得它的IPv4地址。对于网上所说的因为tomcat的反向代理,使得request.getRemoteAddr()无法获得客户端真实IP的问题,我目前还不是很理解。
关于hosts文件
hosts文件相当于一个位于本地的IP地址到域名的映射文件,可以提供DNS解析。如果想访问的网站被域名污染(域名劫持),可以预先将IP,域名对写入hosts文件。
public static String getAddressIP(HttpServletRequest request) { String ipAddress = null; ipAddress = request.getHeader("x-forwarded-for"); if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) { ipAddress = request.getHeader("Proxy-Client-IP"); } if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) { ipAddress = request.getHeader("WL-Proxy-Client-IP"); } if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) { ipAddress = request.getRemoteAddr(); if (ipAddress.equals("127.0.0.1")) { // Based on the IP network card in the machine configuration InetAddress inet = null; try { inet = InetAddress.getLocalHost(); } catch (UnknownHostException e) { e.printStackTrace(); } ipAddress = inet.getHostAddress(); } } // In the case of through multiple agents, // the first real IP IP for the client, // multiple IP in accordance with the ', 'segmentation if (ipAddress != null && ipAddress.length() > 15) { // "***.***.***.***".length() // = 15 if (ipAddress.indexOf(",") > 0) { ipAddress = ipAddress.substring(0, ipAddress.indexOf(",")); } } return ipAddress; }
发表评论
-
追踪应用客户端IP
2013-08-22 09:53 695参考: http://www.knowsky.co ... -
java多线程发送URL请求
2013-07-19 11:32 1128import java.io.Buffered ... -
java启用多进程调用某个类(是class文件)
2013-07-19 11:29 625import java.io.BufferedInpu ... -
支持Window和Linux下tar.gz文件压缩
2013-07-04 19:12 950最近做文件压缩,最后在Window下压缩解压后都可以,可是在W ... -
请慎用java的File#renameTo(File)方法
2013-07-03 12:14 519转自: http://xiaoych.iteye.com/bl ... -
java从tar.gz中抽取某个文件
2013-07-01 15:03 1288File tarGzFile = new File(a ... -
在不同jar文件中有两个同名类是加载的哪一个已经classload
2013-06-24 09:33 1418在Eclipse中加载第一个(通常是lib下面的顺序,但并非一 ... -
Java泛型的使用及List排序
2013-04-19 09:56 940import java.util.ArrayLis ... -
java删除一个文件夹,包括该文件夹下的所有文件夹及文件
2013-04-10 17:42 727要删除的文件必须存在且是一个文件夹,可以根据自己的需求,在调用 ... -
java压缩文件生成XXX.tar.gz压缩包
2013-04-09 13:42 2186生成XXX.tar.gz压缩文件有两种方式,可以先打包后压缩, ... -
java按照编码读写文件
2013-04-07 09:28 760package d20130406; impor ... -
java字符串中显示双引号
2013-04-19 09:58 1171转: http://www.cnblogs.com/zhish ... -
java写入txt文件
2013-04-19 09:59 609用另一个构造方法FileWriter fileWriter=n ... -
读取文件方法大全
2013-04-25 11:51 257转自: http://www.cnblogs.com/love ... -
Java性能监测
2013-04-15 13:20 509通过jdk自带工具监测: -
Java 32bit JVM Xmx 参数大小限制
2013-03-07 13:26 1396转自: http://stackoverflow.com/qu ... -
Java模拟HTTP发送请求
2013-04-15 13:17 726package com.hp.pn.service; ... -
tomcat配置文件
2013-03-01 13:51 599转自: http://www.cnblogs.com/smil ... -
PermGen space错误解决方法,java.lang.OutOfMemoryError
2013-03-01 11:07 767转自: http://www.cnblogs.com/xwdr ... -
<context-param>与<init-param>的区别与作用
2013-02-28 09:41 537转载: http://www.cnblogs.com/hzj- ...
相关推荐
我们知道在jsp里,获取网页客户端的ip地址的方法是:request.getremoteaddr(),这种方法在大部分情况下都是有效的。但是在通过了apache,squid等反向代理软件就不能获取到客户端的真实ip地址了。如果使用了反向代理...
在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了Apache,Squid,nginx等反向代理软件就不能获取到客户端的真实IP地址了。 如果使用了反向代理...
获取请求接口的真实ip 地址工具类。适合所有Java开发人员。针对接口的ip 地址的获取。
在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了。 如果使用了反向代理软件,将...
案例二、完成登录错误信息的回显。 4.通过request获得请求行 获得客户端的请求方式:...注意:request获得客户机(客户端)的一些信息 request.getRemoteAddr() --- 获得访问的客户端IP地址 通过request获得请求头
A filter is an object that performs filtering tasks on either the request to a resource (a servlet or static content), or on the response from a resource, or both. Filters perform filtering in the ...
在Controller类获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了。如果使用了反向代理软件,用...
getRemoteAddr():获得客户端的IP地址 getRemoteHost():获得客户端电脑...//主机名 请问我在JSP页面中使用如下语句: System.out.println(“request.getRemoteAddr(): ” + request.getRemoteAddr()); System.out.pri
获取请求头中ip,不同方法:request.getRemoteAddr(),request.getHeader("x-forwarded-for")
在JSP中,获取客户端IP的方法为:request.getRemoteAddr()。这种方法在大部分情况下都是有效的,但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了。 如果使用了反向代理软件,将...
在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了Apache,Squid等反向代理软件不能获取到客户端的真实IP地址了。像移动网关一样,iisforward这个...
java获取客户端ip(经过多次代理)提示StringUtils cannot be resolved 需要先 import org.apache.commons.lang3.StringUtils; /* 内含 common-lang3.jar commons-... return request.getRemoteAddr(); }
(1)在java中,100.0 * 0.6 结果等于多少?d A、60.0004 B、60 C、60.00 D、60.0 (2)int a = 'A',请问System.out.println(a)打印出什么?a A、65 B、A C、a D、97 (3)System.out.println(Integer.parseInt("+1...
%> 通过调用IPLocalizer.search(ip)可返回一个长度为2的数组(这里以addr为例),addr[0]的信息为国家和省市, 如中国广东,addr[1]为具体地址或机构,如深圳163。 通常符合以下规则: 1.如果为教育网,则addr[0]一般...
在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了。如果使用了反向代理软件,用...
//访问者的ip是:System.out.println(“ip是:” + request.getRemoteAddr()); 以上这篇jsp获得本地及serverIP的简单方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发网。
如何获取对方的IP的方法,其实也不难的,代码如下: ip = request.getRemoteAddr();
在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了 Apache,Nagix等反向代理软件就不能获取到客户端的真实IP地址了。如果使用了反向代理软件,用 ...
在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了
从Request对象中可以获取各种路径信息,以下例子: 假设请求的页面是index.jsp,项目是WebDemo,则在index.jsp中获取有关request对象的各种路径信息如下...String remoteAddress=request.getRemoteAddr(); String serv