問題在于 IPv6 和 IPv4 沒有以任何方式耦合。無法從 v4 地址推斷出 v6 地址,反之亦然。
以我的拙見,您應(yīng)該避免通過 IP 地址驗證用戶,因為 IP 地址是 欺騙,這種做法會導(dǎo)致此類問題。也就是說,有幾個“解決方案”。
在托管 PHP 應(yīng)用程序的網(wǎng)絡(luò)服務(wù)器上禁用 IPv6。由于您沒有提到這是什么類型的網(wǎng)絡(luò)服務(wù)器,您應(yīng)該能夠在谷歌上搜索“禁用 ipv6 apache”之類的內(nèi)容來了解??如何實現(xiàn)這一點。這應(yīng)該保證兩臺服務(wù)器上的 IPv4 地址相同。我個人不太喜歡這個解決方案,因為它阻礙了 IPv6 的采用。
在節(jié)點服務(wù)器上啟用 IPv6。請注意,出于任何原因,客戶端仍然可能更喜歡 IPv4 而不是 IPv6,并且無法保證它將對兩個網(wǎng)絡(luò)服務(wù)器使用 IPv6。
您可以將所有調(diào)用從一個網(wǎng)絡(luò)服務(wù)器代理到另一臺網(wǎng)絡(luò)服務(wù)器,并在“X-Forwarded-For”標(biāo)頭中傳遞原始 IP。這會引入一些開銷,但源IP會更穩(wěn)定。
就我個人而言,我會避免使用 IP 地址并實現(xiàn)某種存儲在客戶端上的令牌,如果可以的話,可以通過共享數(shù)據(jù)庫在兩臺服務(wù)器上進行驗證。