2

Cloudflare 提供了许多解决方案来保留原始客户端的 IP 地址,但主要是针对拥有物理盒子访问权限或拥有 IaaS 的人。

对于谷歌应用引擎,我怎样才能让它与 Cloudflare 一起工作,以便我仍然可以提取原始客户端的 IP 地址?

4

3 回答 3

2

您还可以使用 HTTP_X_FORWARDED_FOR 来获取“真实”IP。看来您可以使用以下详细信息在 Java 中做到这一点:

 String ipaddress = request.getHeader("HTTP_X_FORWARDED_FOR");

 if (ipaddress  == null)
        ipaddress = request.getRemoteAddr();

来源 = http://thepcspy.com/read/getting_the_real_ip_of_your_users/

相关且可能有帮助: http: //www.coderanch.com/t/293684/JSP/java/client-IP-address-Domain-Java

于 2013-06-25T20:47:25.373 回答
1

根据cloudflare 支持,他们正在设置一个标题:CF-Connecting-IP.

要在 java 中检索此标头,您可以使用

String paramIpAddress = request.getHeader("CF-Connecting-IP");
if (paramIpAddress == null) {
    paramIpAddress = request.getRemoteAddr();
}
于 2016-04-18T08:12:48.027 回答
0

您可以使用以下服务器变量:

$_SERVER["HTTP_CF_CONNECTING_IP"] 真实访客IP地址

$_SERVER["HTTP_CF_IPCOUNTRY"] 访问者国家

$_SERVER["HTTP_CF_VISITOR"] 如果它的 HTTP 或 HTTPS

以下是 PHP 中的示例代码:

if (isset($_SERVER["HTTP_CF_CONNECTING_IP"])) {
  $_SERVER['REMOTE_ADDR'] = $_SERVER["HTTP_CF_CONNECTING_IP"];
}
于 2013-06-20T23:42:17.300 回答