• 处理java获取ip为0:0:0:0:0:0:0:1的问题


     

    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了

    下面几个获取ip的方法:

    复制代码
        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;
        }
    复制代码

    原文地址:http://blog.csdn.net/leoz0802/article/details/6364565

    另一篇:http://java161.iteye.com/blog/1189279

    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:WindowsSystem32driversetchosts这个文件),仅仅只需要文件中的 # ::1 localhost 这一行被注释掉即可解决问题。另外localhost这个文件很有用,这里你可以添加自己的条目,例如添加 192.168.0.212 myweb 这样子,在浏览器中原来只能使用192.168.0.212来访问的,并可以使用myweb来进行替换。

    如果还不能解决,本机访问的时候用127.0.0.1或本机ip代替localhost即可解决

  • 相关阅读:
    Java内存模型
    mysql通过“延迟关联”进行limit分页查询优化的一个实例
    RabbitMQ(二):相应机制、持久化、负载均衡分发
    RabbitMQ(一):安装配置、用户权限
    S7.Net与西门子PLC通讯——纯新手必看
    [.net core] 创建和发布NuGet包 (dotnet CLI)
    [收藏]2018年10月最新全网可用接码打码平台 [若快已挂]
    如何写出无法维护的代码
    C# ——Parallel类
    .net语音播放,自定义播报文字
  • 原文地址:https://www.cnblogs.com/originate918/p/6774916.html
Copyright © 2020-2023  润新知