如何获取真实客户端的IP地址?

作者阿里云代理 文章分类 分类:新闻快递 阅读次数 已被围观 930

当HTTP请求经过七层代理时,其来源IP地址会被修改为代理地址,而非真实客户端的地址。事实上,客户端的IP地址通常被写入HTTP请求头的x-forwarded-for字段中。

阿里云Web应用防火墙的工作原理如下。

假设Web应用防火墙防护的域名为“www.abc.com”。那么,从客户端发出的请求依次经过以下节点:客户端浏览器 > Web应用防火墙 > 源站服务器(pache/Nginx/IIS等)。在此结构下,Web应用防火墙扮演源站和客户端之间的反向代理。

然而,在包含多层代理的网络结构下(例如,除过Web应用防火墙还接入了CDN和DDoS高防IP),所有代理的IP地址都会被添加在x-forwarded-for字段中。这是因为每经过一次转发,代理服务器都会写入代理IP地址。

因此,x-forwarded-for字段可能显示为X-Forwarded-For: 客户端IP, 代理IP1, 代理IP2, 代理IP3, ...。其中,客户端IP仍会占据在第一个位置。

操作流程

参照以下步骤,获取客户端真实IP地址:

1.请求x-forwarded-for字段内容。

以下为不同语言的示例代码:

▫ASP

Request.ServerVariables("HTTP_X_FORWARDED_FOR")

▫ASP.NET(C#)

Request.ServerVariables["HTTP_X_FORWARDED_FOR"]

▫PHP

$_SERVER["HTTP_X_FORWARDED_FOR"]

▫JSP

request.getHeader(“HTTP_X_FORWARDED_FOR”)

2.以逗号为分隔符分隔获得的x-forwarded-for内容,第一个IP地址就是客户端真实IP。

阿里云代理商  阿里云分销商
本公司销售:阿里云、腾讯云、百度云、天翼云、金山大米云、金山企业云盘!可签订合同,开具发票。

我有话说: