P粉8603709212023-09-05 15:18:18
問題在於 IPv6 和 IPv4 沒有以任何方式耦合。無法從 v4 位址推斷出 v6 位址,反之亦然。
以我的拙見,您應該避免透過 IP 位址驗證用戶,因為 IP 位址是 欺騙,這種做法會導致此類問題。也就是說,有幾個“解決方案”。
在託管 PHP 應用程式的網頁伺服器上停用 IPv6。由於您沒有提到這是什麼類型的網頁伺服器,您應該能夠在Google上搜尋「停用 ipv6 apache」之類的內容來了解如何實現這一點。這應該保證兩台伺服器上的 IPv4 位址相同。我個人不太喜歡這個解決方案,因為它阻礙了 IPv6 的採用。
在節點伺服器上啟用 IPv6。請注意,出於任何原因,用戶端仍然可能更喜歡 IPv4 而不是 IPv6,並且無法保證它將對兩個網路伺服器使用 IPv6。
您可以將所有呼叫從一個網頁伺服器代理到另一台網頁伺服器,並在「X-Forwarded-For」標頭中傳遞原始 IP。這會引入一些開銷,但來源IP會更穩定。
就我個人而言,我會避免使用 IP 位址並實現某種儲存在客戶端上的令牌,如果可以的話,可以透過共用資料庫在兩台伺服器上進行驗證。