【问题标题】:How can I get the user's IP-Address in my Cloud-Run Flask app?如何在我的 Cloud-Run Flask 应用程序中获取用户的 IP 地址?
【发布时间】:2021-07-11 16:38:07
【问题描述】:

我有一个通过 Google Cloud Run 运行的 Flask 应用程序,我需要知道用户的 IP 地址。 我正在使用 gunicorn 作为我的服务器。 我试过以下代码:

request.remote_addr
request.environ['REMOTE_ADDR']
request.environ.get('HTTP_X_REAL_IP', request.remote_addr)

它正在返回这个 IP 地址:169.254.8.129,它不是我的。 这可能是应用程序和用户之间的负载平衡器的 IP 吗?

有没有办法在不使用其他服务的情况下获得正确的 IP 地址?

【问题讨论】:

    标签: python flask google-cloud-run


    【解决方案1】:

    在 Cloud Run 中,我在 Flask 路由中执行了以下操作:

    ip = request.environ.get("HTTP_X_FORWARDED_FOR", request.remote_addr)
    logging.info(f"IP ADDRESS: {ip}")
    

    这样我可以得到请求者的公共IP地址。

    request.remote_addr 适用于 App Engine 等服务器。

    【讨论】:

      【解决方案2】:

      您有 Google 提供的标题。在我的测试中,我得到了这些 2:

      X-Forwarded-For: [MyPubliCIp, LoadBalancerIp,MyPubliCIp]
      Forwarded: [for="MyPubliCIp";proto=http]
      

      根据需要使用它们。

      【讨论】:

      • 完美运行!谢谢。
      猜你喜欢
      • 2020-09-24
      • 1970-01-01
      • 1970-01-01
      • 2020-12-31
      • 2013-01-30
      • 2014-05-17
      • 1970-01-01
      • 1970-01-01
      • 2014-08-05
      相关资源
      最近更新 更多