`

X-Forwarded-For介绍及返回ip地址遇到的坑

 
阅读更多

今天遇到一个问题:
页面在android版微信内置浏览器中打不开,在ios版本微信及其他浏览器中能够打开,调试了一下发现当用android版微信内置浏览器打开后台报错,错误原因是定位功能,

String ip = request.getHeader("x-forwarded-for");

该语句能够获取到客户端的ip,但dubug之后,发现返回的是两个ip,用,分割:***.***.***.***,***.***.***.***

于是网上查找原因:

参考链接:http://blog.csdn.net/joe_007/article/details/8608621

意思是说,该方法会返回如下格式的ip
X-Forwarded-For: client1, proxy1, proxy2

第一个参数是clientip,即实际访问设备的ip,其他的是代理服务器ip,应该是微信在全国各地的nginx代理服务器。

 

解决方案:

if(!StringUtils.isEmpty(ip)) {
   ip = ip.split(",")[0];
}

加这样一个方法获取第一个参数即可。

 

 

分享到:
评论

相关推荐

    使用HTTP_X_FORWARDED_FOR获取客户端IP的严重后果

    具体到测试代码,一个恶意用户可以自行设置X-FORWARDED-FOR头部,并伪造请求头,使得Web应用返回任何他希望的IP地址。例如: ```csharp HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("***"); ...

    jsp页面得到客户端的真是ip

    在实际应用中,可能还会遇到一些特殊情况,例如 `X-Forwarded-For` 的值为 `unknown` 或者被多个 IP 地址分隔的情况。为了更准确地获取客户端的真实 IP 地址,可以采用以下方法: ```java public String getIpAddr...

    java中怎么获取客户端的真实的IP

    在某些情况下,`X-Forwarded-For`字段可能包含多个IP地址,这是因为在多个代理服务器之间转发时,每个代理服务器都会在该字段中添加自己的IP地址。这时,我们需要获取最前面的一个IP地址作为客户端的真实IP地址。 *...

    ASP如何获取真实IP地址

    2. **多重代理的情况**:如果客户端通过多层代理服务器访问,`X-Forwarded-For`字段可能包含多个IP地址,按照从客户端到服务器的方向排列。此时,真实客户端的IP地址通常位于这些IP地址列表的最前端。 3. **安全性...

    Laravel开发-laravel-cloudflare-real-ip

    如果`CF-Connecting-IP`不存在,可以尝试从`X-Forwarded-For`中提取第一个IP地址。 ```php public function handle(Request $request, Closure $next) { $forwardedFor = $request->headers->get('X-Forwarded-For...

    获取客户的ip小例子

    如果客户端请求经过了多个代理服务器,`X-Forwarded-For`头信息可能会包含原始客户端的IP地址。这个头字段通常由每个代理服务器添加,以便服务器能追踪实际请求来源。因此,我们需要检查`X-Forwarded-For`头,以...

    JSP 获取用户的真实IP两种实现方法详解

    如果存在,就返回“X-Forwarded-For”头部的第一个IP地址。 方法二:多重检查其他代理头部 另一种方法是检查其他的代理相关的HTTP头信息,比如“Proxy-Client-IP”和“WL-Proxy-Client-IP”。这些头信息可能由不同...

    PHP+jQuery根据IP地址定位城市

    这时,可以检查`$_SERVER['HTTP_X_FORWARDED_FOR']`,它包含了经过代理服务器转发的IP地址。 2. **调用API接口**:选择一个IP定位服务提供商,注册并获取API密钥。比如使用MaxMind的GeoLite2库,可以下载免费的IP...

    linux下Nginx+tomcat安装与配置

    `(注释掉):设置代理服务器传递给目标服务器的请求头中的 `X-Forwarded-For` 字段,通常用于记录经过的所有代理服务器的 IP 地址列表。 - `client_max_body_size 10m;`:设置客户端请求体的最大大小。 - `client_...

    Python使用django获取用户IP地址的方法

    本篇文章将详细讲解如何在Django中获取用户的IP地址,并探讨在实际应用中可能遇到的问题及其解决方案。 首先,我们要了解在Django中获取用户IP的基本方法。通常,用户请求的信息会通过HTTP协议传递到服务器,其中就...

    PHP curl伪造IP地址和header信息代码实例

    本文介绍的是使用PHP中的curl函数库实现伪造IP地址和HTTP header信息的基本代码示例。在网络安全和网页应用开发中,伪造IP地址和header信息可能会用于各种目的,例如模拟不同网络环境下的客户端请求、测试服务器安全...

    php获取访客IP和地理位置信息的类

    为了获取真实用户IP,有时需要检查`$_SERVER['HTTP_X_FORWARDED_FOR']`或者`$_SERVER['HTTP_CLIENT_IP']`。 2. 解析IP地址:有一个名为`UTFWry.dat`的文件,它可能是一个IP数据库,用于将IP地址转换为国家/地区信息...

    php基于curl实现随机ip地址抓取内容的方法

    接着,我们构建了一个HTTP头部数组,其中包含了模拟浏览器行为的必要信息,如User-Agent、Accept等,同时在`CLIENT-IP`和`X-FORWARDED-FOR`这两个HTTP头字段中设置了刚才生成的随机IP,这样服务器在接收到请求时会...

    PHP获取IP地址所在地信息的实例(使用纯真IP数据库qqwry.dat)

    代码示例中通过判断环境变量和服务器变量来确定IP地址,优先级依次为HTTP_CLIENT_IP、HTTP_X_FORWARDED_FOR、REMOTE_ADDR和$_SERVER['REMOTE_ADDR']。如果这些变量为空或者为"unknown",则返回"*.*.*.*"。 ```php ...

    nginx外网访问内网站点配置操作

    proxy_set_header X-Forward-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-Nginx-Proxy true; proxy_pass *** *** } } 2. 保存修改并重启nginx。配置完成后,需要...

    添加Nginx代理配置只允许内部IP访问的实现方法

    `X-Real-IP`和`X-Forwarded-For`头则用于传递客户端的真实IP地址,这对于日志记录和反向代理的IP跟踪非常重要。 注意事项: - `deny`指令必须至少有一个IP地址,否则Nginx会立即返回403 Forbidden错误,并且不会...

    C# 获取IP及判断IP是否在区间

    在C#编程中,获取客户端IP地址以及判断一个IP地址是否位于特定的IP区间是非常常见的需求,特别是在网络应用开发中。以下将详细解释如何使用C#实现这两个功能。 首先,我们来看`GetClientIpAddress`方法,它用于获取...

    php使用curl伪造来源ip和refer的方法示例

    - `CURLOPT_HTTPHEADER`:添加自定义的 HTTP 头,这里用于设置 `X-FORWARDED-FOR` 和 `CLIENT-IP`,这两个头字段通常用来追踪客户端的 IP 地址,这里用随机 IP 替换。 - `CURLOPT_REFERER`:设置 Referer 头,模拟...

    c#.net常用函数和方法集

    - 当用户通过代理服务器访问时,可能需要检查`X-Forwarded-For`头来获取真实IP,因为它会记录经过的代理服务器。 这些是C# .NET开发中的基础操作,对于日常编码工作非常实用。了解并熟练运用这些函数和方法,可以...

    thinkphp如何获取客户端IP

    在PHP开发中,获取客户端IP地址是常见的需求,特别是在服务器端需要识别用户来源时。...如果你在实际开发中遇到关于获取IP地址的问题,可以参考本文介绍的方法,结合具体的项目需求进行调整和优化。

Global site tag (gtag.js) - Google Analytics