客户端 IP 在 heroku 中重新加载每个页面都是不同的

client IP is different each page reload in heroku

我正在尝试获取客户端 IP 作为保存特定用户的一种方式,以便服务器在他们下次访问时知道他们是谁,而无需 login/signup 进行任何操作。这是一个带有 NodeJS 后端的 React 前端。

我在本地试用了我的应用程序,它似乎运行良好。但我尝试将它部署到 Heroku,现在每次重新加载时我都会获得不同的 IP 地址。它在访问期间保持相同的 IP,但是一旦我重新加载(刷新)页面,我的 IP 就会改变..

[Method: 'POST'] [Path: '/api/posts'] [IP '::ffff:***.63.***.219']
[Method: 'POST'] [Path: '/api/posts'] [IP '::ffff:***.47.***.144']

(修改实际ip)

这是我的控制台,你可以看到IP完全不同,和我的IP一点也不像。我正在从请求对象 (request.ip) 获取 IP。

为什么每次在 Heroku 上的 IP 都不一样,但在我的本地机器上却很稳定?是否有另一种获取我应该使用的客户端 IP 的方法?或者这是一个 Heroku 问题?我一直在寻找这方面的答案,但一无所获,这让我觉得这是 Heroku 特有的。

根据Heroku Documentation, all requests are going through a Proxy which acts mainly as a load balancer (If I have it correct in mind). You can use the custom HTTP-Headers获取客户​​端ip地址,但不推荐

补充: 出于安全原因,您应该避免使用 IP 来识别用户,因为这可能会导致会话劫持。请改用 cookie 等技术!