如何通过 Amazon API Gateway (JAVA) 检索用户的公共 IP 地址

Posted

技术标签:

【中文标题】如何通过 Amazon API Gateway (JAVA) 检索用户的公共 IP 地址【英文标题】:How can I retrieve a user's public IP address via Amazon API Gateway (JAVA) 【发布时间】:2021-08-11 22:11:47 【问题描述】:

在 Cloudfront 的帮助下使用自定义策略创建签名 URL,并在策略中添加客户端 IP 和到期日期限制。为了测试我的代码,我在 java 代码中硬编码了我的公共 ipv4。我如何动态地做到这一点。我创建了一个程序

URL whatismyip = new URL("http://checkip.amazonaws.com"); BufferedReader in = new BufferedReader(new InputStreamReader( whatismyip.openStream()));

    String ip = in.readLine(); //you get the IP as a String
    return  ip+"/32";

在本地,它返回准确的输出,但是当我在我的开发层上运行它时,它返回的是集群的 IP,而不是用户的 IP。如何在我的集群上获取用户 Ip。

【问题讨论】:

【参考方案1】:

您可以在X-Forwarded-For 标头中找到客户端的IP 地址,如the Cloudfront documentation 中所述。

在How to get client IP of requests via CloudFront?中也可以找到关于如何提取正确地址的详细说明。

【讨论】:

以上是关于如何通过 Amazon API Gateway (JAVA) 检索用户的公共 IP 地址的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Cognito 令牌传递给 Amazon API Gateway?

如何对 Amazon API Gateway 终端节点进行 CNAME

如何将参数从 POST 从 Amazon API Gateway 传递到 AWS Lambda

ELB 和 ECS 集群前的 Amazon API Gateway

如何使用 OpenAPI 为 AWS API Gateway 配置 CORS?

Amazon API Gateway 和 AWS Lambda 中的错误处理模式