从request里获取客户端的ip

2023-05-16

目录

代码:

x-forwarded-for

参考:


代码:

    public static String getIpAddress(HttpServletRequest request) {
		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.getHeader("HTTP_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.getRemoteAddr();  
        } 
        if (ip.equals("0:0:0:0:0:0:0:1")) {
			ip = "localhost";
		}
        return ip;
	}

从request里获取客户端的ip,常规上的写法是上面那样,可以根据实际情况来调整。

x-forwarded-for

获取这个的值,是因为可能有配置了反向代理服务器,比如nginx。

可以参考

参考:

HTTP 请求头中的 X-Forwarded-For,X-Real-IP - weelin_area - 博客园 (cnblogs.com)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从request里获取客户端的ip 的相关文章

  • python 如何解码http响应

    我正在使用下面的代码登录并从 api 端点检索数据 但响应似乎已编码 我无法读取内容 我正在使用请求 requests 0 0 1 import requests import json import os http proxy http
  • 使用内容配置作为文件名下载 Node.js 文件

    我正在使用 Request 模块下载文件 但是当文件名必须来自 Content Disposition 标头时 我不太确定如何将响应传输到输出流 所以基本上 我需要读取响应直到找到标头 然后将其余部分通过管道传输到该文件名 这些示例显示如下
  • 表达请求 .query.xyz 作为字符串 |细绳[]

    我正在尝试为我的变量分配一个类型 该变量从express 请求查询中获取其值 req query 的类型为 QueryString ParsedQs 例如 req query accountId 的类型为 string QueryStrin
  • 发送 XML 字符串作为响应

    我正在从第三方应用程序 不同域 向我的 ASP 应用程序获取请求 我正在处理请求并在我的应用程序中执行业务部分 作为确认 我需要将 XML 字符串作为响应发送到将请求发布到我的应用程序的同一页面 我使用以下代码成功检索了 Request 中
  • “Request::is()”在 laravel 5.5 上不起作用,在 Blade 中

    我正在尝试在活动菜单上设置活动类 过去我用的是请求 is 函数为此 但在新版本的 laravel 中它说 未找到 请求 类 当你正在使用blade您可以使用request https laravel com docs 5 5 helpers
  • 使用缓存文件还是一个以上的 HTTP 请求?

    在所有 加速你的网站 网站和书籍上 他们总是告诉我们不惜一切代价尽量减少 HTTP 请求 这很好 但如果这意味着在每个页面上你都必须一次又一次地重新加载 120kb 因为用户缓存是空的怎么办 如果我在网站的每个页面上使用 5 个 js 文件
  • 在 HTTP 请求中指定端口号 (node.js)

    使用请求模块发出 HTTP 请求时是否可以指定端口号 我在文档中没有看到任何有关此内容的信息 var request require request this works request method GET url http exampl
  • Cypress:如何等待所有请求完成

    我正在使用 cypress 来测试我们的 Web 应用程序 在某些页面中 有不同的端点请求被执行多次 例如GET A GET B GET A 为了等待所有请求完成并保证页面已完全加载 赛普拉斯的最佳实践是什么 我不想用很多cy wait 命
  • 从 C# 级别将带有数据的 POST 请求发送到 PHP 脚本

    所以我有一个 php 脚本 其名称是 wiadomosci php 代码如下
  • NTP请求包

    我试图弄清楚我需要在 NTP 请求包中发送 客户端 什么才能从服务器检索 NTP 包 我正在 Cortex M3 Stellaris LM3S6965 上使用 LWIP 据我了解 我将收到 UDP 标头 然后收到具有不同时间戳的 NTP 协
  • 如何在scrapy中发出请求之前更改请求url?

    我需要在下载响应之前修改我的请求网址 但我无法改变它 即使使用修改请求网址后request replace url new url the process response打印未修改的 url 这是中间件的代码 def process re
  • 如何使用Python获取请求中响应的原始内容?

    尝试获取HTTP响应内容的原始数据requests在Python中 我有兴趣通过另一个渠道转发响应 这意味着理想情况下内容应该尽可能原始 这样做的好方法是什么 After requests get 您可以使用r content提取原始字节类
  • 将请求传递给特定的分叉节点实例

    如果我错了 请纠正我 但不可能在同一端口上启动多个 http 服务器 基于此 有趣的是 NodeJS 集群可能会分叉 因为我知道有一个主人正在将请求传递给其中一个分叉工人 什么worker是由操作系统管理的或者cluster schedul
  • 单元测试 Laravel FormRequest

    我正在尝试对各种自定义进行单元测试FormRequest输入 我找到的解决方案是 建议使用 this gt call 方法并断言response与预期值 答案链接 https stackoverflow com questions 2979
  • Request.UserHostAddress返回负载均衡器的IP地址

    我的网站中有一行关键代码可以在我们的开发环境中运行 但不能在生产环境中运行 好吧 我说它在开发中起作用 但事实是它给了 1 这是 IPv6 环回地址 无论如何 我想要做的是捕获访问该站点的用户的 IP 地址 因此 我使用Request Us
  • Ruby on Rails 3:如何分别检索 POST 和 GET 参数?

    我知道你可以使用获取参数params 但问题是它合并了所有参数 无论它们是通过GET or POST 如果您通过以下方式发送请求GET 没问题 参数只能挤在URL里 但如果你发送一个POST具有类似 URL 的请求 blabla foo b
  • 我如何在soapUI中循环发出具有不同内容的请求? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一个方法作为soapUI 中的请求 它将数据传输到在线平台 我有不同的变量 每次都有不同的竞争 有没有办法让我每次都用不同的内容循
  • 如何完全禁用 VS Code 的网络请求(遥测、更新等)

    由最新来源构建 我试图阻止 vs code 发出任何网络请求 检查更新 遥测等 我试过这个 config telemetry enableCrashReporter false telemetry enableTelemetry false
  • 如何使用 node.js 请求模块使用我自己的证书进行 SSL 调用?

    我正在使用 node js 和此请求模块对另一台服务器进行 HTTP 调用 https github com mikeal request https github com mikeal request 效果很好 我现在需要修改此代码以使用
  • Slack Webhook - 获取 Invalid_Payload

    我正在尝试设置 Slack 的 Webhook 但收到 Invalid Payload 错误消息 我浏览过 Stack Slack 和 Github 但找不到我想要的答案 为了保护隐私 其中的 自定义链接 正在使用实际链接 CODE var

随机推荐

  • 关系型数据库删除记录之后,如何同步到索引库ElasticSearch

    利用logstash xff0c 可以很方便的全量或增量同步MySql表中的数据 可是如果MySql表里删除了记录 xff0c 就没有办法直接删除对应的索引信息了 变通方法 xff1a 方法一 xff1a 在删除MySql表里的记录的时候
  • nginx/tengine添加模块

    项目中使用的tengine xff0c 在后期说要添加健康检查模块ngx http upstream check module xff0c 没办法 xff0c 只能动态添加 tengine的官方说明 xff1a ngx http upstr
  • Spring参数校验之Bean的分组校验@Validated

    利用好javax validation groups Default class 这个默认分组 一 建立不同的分组 注意建立的是接口 xff0c 继承Default AddGroup public interface AddGroup ex
  • @FeignClient注解的接口,用@Autowired可能获取不到实例

    背景 xff1a Spring Boot 2 0 8 RELEASE Spring Cloud 2 0 4 RELEASE OpenFeign 2 0 4 RELEASE JDK 1 8 启动类 xff1a package com xxx
  • 如何在Ubuntu 20.04 上安装 Xrdp 服务器(远程桌面)

    简介 xff1a Xrdp 是一个微软远程桌面协议 xff08 RDP xff09 的开源实现 xff0c 它允许你通过图形界面控制远程系统 通过 RDP xff0c 你可以登录远程机器 xff0c 并且创建一个真实的桌面会话 xff0c
  • ThreadLocal的脏数据、内存泄露

    背景 xff1a Spring Boot 2 0 8 RELEASE Spring Cloud 2 0 4 RELEASE tomcat 8 5 37 JDK 1 8 项目使用ThreadLocal来传递参数 xff0c 比如 xff1a
  • idea的Database无法提示表名、字段名、无法加载schema问题

    在使用idea的Database的时候 xff0c 数据库已经连接上了 xff0c 查询也能查出数据来 可是表名显示是红色的 xff0c 而且也无法提示 自动填充表名和字段名 xff0c 如下图 xff1a idea的提示是Unable t
  • idea启动项目很慢

    随着项目的开发 调试 xff0c 在一段时间之后 xff0c 发现项目启动的速度越来越慢 xff0c 甚至到了5分钟都没启动完的情况 刚开始以为是项目代码的问题 xff0c 可以问了同事之后 xff0c 他们说项目启动还是很快的 xff0c
  • JVM规范 oracle官网

    Java SE Specifications oracle com 可以选择jdk版本来看对应的JVM规范 如常用的Java SE 8 Edition xff0c class文件的结构说明 xff1a Chapter 4 The class
  • package-info.java的作用

    目录 作用 一 提供包级别的注释 1 在idea里的体现 xff1a 2 在Javadocs里的体现 xff1a 二 提供包级别的注解 三 提供包级别的友好类和变量 1 在同一个包里能正常使用 2 在别的包里就不能使用 xff0c 包括子包
  • 浅复制和深复制-以HashMap为例

    目录 1 简介 2 浅复制和深复制 2 1浅复制 xff08 shallow copy xff09 2 2深复制 xff08 deep copy xff09 3 常见实现方式 3 1 浅复制 3 1 1使用HashMap的构造器 3 1 2
  • 序列化和反序列化

    摘要 这里说的序列化 反序列化是针对数据结构和二进制之间的相互转换 比较常用的序列化协议有 hessian kyro protostuff 序列化和反序列化几乎是工程师们每天都要面对的事情 xff0c 但是要精确掌握这两个概念并不容易 xf
  • Java 获取泛型的类型实例详解

    Java 获取泛型的类型实例详解 Java 泛型实际上有很多缺陷 xff0c 比如不能直接获取泛型的类型 xff0c 不能获取带泛型类等 以下方式是不正确的 获取带泛型的类的类型 1 Class lstUClazz 61 List lt U
  • idea启动项目失败 YAMLException 中文文件编码格式

    目录 环境信息 xff1a 问题描述 xff1a 解决方案 xff1a 解决思路 xff1a 解决方法 xff1a 1 查看application yml文件里是否有中文 2 查看application yml的编码格式 xff0c 是不是
  • idea读取配置文件如ValidationMessages.properties中文乱码

    目录 环境信息 xff1a 问题描述 xff1a 解决方案 xff1a 解决思路 xff1a 解决方法 xff1a 总结 环境信息 xff1a idea2021 1 1 xff08 注 xff1a 如果是其它版本的idea xff0c 也可
  • 【超简单5分钟~最新版】微信公众号早安定时推送 带天气、纪念日、生日、定时推送等(附4.0最新版)

    微信公众号早安推送 无计算机基础 xff0c 5分钟即设置好 xff08 定时推送 及 最新版 在文章末 xff09 效果如图 xff1a 操作步骤 xff1a 1 百度搜索 微信公众平台测试号申请 xff0c 自己扫码登陆 https m
  • SpringBoot项目启动失败,Ambiguous mapping. Cannot map ‘xxxController‘ method

    目录 项目场景 xff1a 问题描述 xff1a 原因分析 xff1a 解决方案 xff1a 项目场景 xff1a SpringBoot 2 1 15 RELEASE 问题描述 xff1a SpringBoot项目启动失败了 xff0c 后
  • idea操作git获取其它分支的文件

    需求 xff1a 代码有多个分支 xff0c 其中一个分支A是专门给一个项目组使用的 xff0c 和master分支差别比较大 在公司开发的时候 xff0c 提供给项目组的代码需要单独对比 合并 xff0c 不能直接从master合并到分支
  • RequestContextHolder分析

    需求 xff1a 在一次请求的过程中 xff0c 想要获取request和response 如果每个方法都需要把这两个当成入参 xff0c 这样显得很不雅观 Spring web包里就提供了RequestContextHolder这个类来方
  • 从request里获取客户端的ip

    目录 代码 xff1a x forwarded for 参考 xff1a 代码 xff1a public static String getIpAddress HttpServletRequest request String ip 61