前后端分离 后端服务器端 怎么获取 前端请求的ip地址麽 (不是用户的ip地址)

JerryZhou_ 2019-05-29 11:37:25
前后端分离,比如前端服务器的ip是 12.12.12.12,Java后端服务怎么得到这个IP地址呢?不是需要用户的真实IP地址
...全文
4445 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
h1132744291 2021-11-29
  • 打赏
  • 举报
回复

因为我也遇到了,所以我这里再来解释一下楼主的问题。
他是说它可以从客户端直接通过地址栏访问后端,后端此时通过request.getRemoteAddr()可以获取到客户端的ip地址。(这里暂且不考虑反向代理的情况),
而如果客户端先访问前端,然后前端将请求发送到后端服务器,此时在后端里request.getRemoteAddr()获取到的仍旧是客户端ip,而不是前端的ip。
他这里想区分一下,想获取到前端的ip。

然后解答是说情况二里,你客户端请求前端,你请求的url里就是前端的地址,在后端的request中是可以获取到的,也就是说可以解析出你访问的前端的ip,应该。(不知道加上域名,获取到的应该是前端的域名吧?那ip呢?)

然后我现在有个问题就是,有什么方法可以辨别到底是前端过来的请求还是客户端直接访问后端过来的请求?(别告诉我在前端什么的加参数,知道你的参数我一样可以在地址栏拼;也别说什么只接受post,我写个表单还不随随便便,和地址栏没什么区别)

qq_39735991 2021-02-09
  • 打赏
  • 举报
回复
楼主 这个问题解决了吗 解惑一下 是怎么解决的
JerryZhou_ 2019-06-20
  • 打赏
  • 举报
回复
虽然没有满意答复,还是谢谢大家解答
ziyuanxian 2019-06-01
  • 打赏
  • 举报
回复
前端用ajax 提交数据到后端,后端就可以获取前端请求URL的IP了。
tianfang 2019-05-31
  • 打赏
  • 举报
回复
请求过程是怎么传递的,前端地址有什么用,后端服务http服务器是什么? 前端服务器调用还是客户端调用?如果前端服务器调用,请求中的IP就是啊
early的牙膏兄 2019-05-29
  • 打赏
  • 举报
回复
request中有吧
JerryZhou_ 2019-05-29
  • 打赏
  • 举报
回复
引用 3 楼 tianfang 的回复:
前端服务器干什么?在前后端分离中什么角色?
前端服务器就是 前端网站界面,给用户登陆注册用的,然后前端调用后端登陆注册接口这样
tianfang 2019-05-29
  • 打赏
  • 举报
回复
前端服务器干什么?在前后端分离中什么角色?
李培文 2019-05-29
  • 打赏
  • 举报
回复
1:如果你想校验请求是不是从前端发来的话,拼接加一个参数作为校验条件 2:条件吻合,request.getHeader("x-forwarded-for") ,获取ip。做校验,然后继续你的操作
Sunyiban 2019-05-29
  • 打赏
  • 举报
回复 2
 /**
     * 获取ip
     **/
    public static String getClientIpAddr(HttpServletRequest request) {
        String ip = request.getHeader("X-Forwarded-For");
        if (ip != null && ip.length() != 0 && !"unknown".equalsIgnoreCase(ip)) {
            // 多次反向代理后会有多个ip值,第一个ip才是真实ip
            int index = ip.indexOf(',');
            if (index != -1) {
                ip = ip.substring(0, index);
            }
        }
        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.getHeader("HTTP_X_FORWARDED_FOR");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("HTTP_X_FORWARDED");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("HTTP_X_CLUSTER_CLIENT_IP");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("HTTP_CLIENT_IP");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("HTTP_FORWARDED_FOR");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("HTTP_FORWARDED");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("HTTP_VIA");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("REMOTE_ADDR");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("X-Real-IP");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getRemoteAddr();
            if (ip.equals("127.0.0.1") || ip.equals("0:0:0:0:0:0:0:1")) {
                //根据网卡取本机配置的IP
                InetAddress inet = null;
                try {
                    inet = InetAddress.getLocalHost();
                } catch (UnknownHostException e) {
                    e.printStackTrace();
                }
                ip = inet.getHostAddress();
            }
        }
        return ip;
    }
其实不太理解你的问题,如果指的是获取请求ip地址这个可以用。。。

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧