P粉8603709212023-09-05 15:18:18
问题在于 IPv6 和 IPv4 没有以任何方式耦合。无法从 v4 地址推断出 v6 地址,反之亦然。
以我的拙见,您应该避免通过 IP 地址验证用户,因为 IP 地址是 欺骗,这种做法会导致此类问题。也就是说,有几个“解决方案”。
在托管 PHP 应用程序的网络服务器上禁用 IPv6。由于您没有提到这是什么类型的网络服务器,您应该能够在谷歌上搜索“禁用 ipv6 apache”之类的内容来了解如何实现这一点。这应该保证两台服务器上的 IPv4 地址相同。我个人不太喜欢这个解决方案,因为它阻碍了 IPv6 的采用。
在节点服务器上启用 IPv6。请注意,出于任何原因,客户端仍然可能更喜欢 IPv4 而不是 IPv6,并且无法保证它将对两个网络服务器使用 IPv6。
您可以将所有调用从一个网络服务器代理到另一台网络服务器,并在“X-Forwarded-For”标头中传递原始 IP。这会引入一些开销,但源IP会更稳定。
就我个人而言,我会避免使用 IP 地址并实现某种存储在客户端上的令牌,如果可以的话,可以通过共享数据库在两台服务器上进行验证。