开发者社区> 问答> 正文

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

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

展开
收起
保持可爱mmm 2020-03-27 18:43:10 983 0
1 条回答
写回答
取消 提交回答
  • 当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地址: 请求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”) 以逗号为分隔符分隔获得的x-forwarded-for内容,第一个IP地址就是客户端真实IP。

    2020-03-27 18:49:26
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载