我做什么我從與 .NET Core ASP 服務(wù)器位于同一 IPv4 本地網(wǎng)絡(luò)上的遠(yuǎn)程客戶端發(fā)出 HTTP 請求。該服務(wù)器配置為AuthenticationHandler通過 訪問遠(yuǎn)程 IP 地址的子類驗(yàn)證請求Context.Connection.RemoteIPAddress。我的期望當(dāng)應(yīng)用程序在 Unixy 系統(tǒng)上運(yùn)行時(shí),Context.Connection.RemoteIPAddress返回IPAddress表示為預(yù)期的“192.168.1.12”的值。會發(fā)生什么當(dāng)應(yīng)用程序在 Windows 系統(tǒng)上運(yùn)行時(shí),Context.Connection.RemoteIPAddress返回IPAddress表示為“::ffff:192.168.1.12”的值。問題我想將 的返回值RemoteIPAddress與另一個(gè)IPAddress值進(jìn)行比較,但該值表示為簡單的“192.168.1.12”。因此,盡管兩個(gè)地址相同(或應(yīng)該相同?。鼈儽容^起來不相等。非解決方案這是一個(gè)僅支持 IPv4 的網(wǎng)絡(luò),因此嘗試阻止 IPv6 流量是沒有意義的。我也不想進(jìn)行某種模糊字符串比較;盡管它可以工作并且我看不出有任何問題,但我有一種感覺,那里有更好的解決方案。問題我可以看到兩種可能的解決方案,但我不確定如何實(shí)現(xiàn)它們:可能有一種方法可以確保以RemoteIPAddress我期望的 IPv4 形式返回遠(yuǎn)程 IP 地址??赡苁冀K將所有 IP 地址轉(zhuǎn)換為這種人造 IPv6 格式,并且如果該轉(zhuǎn)換是冪等的,則在比較之前標(biāo)準(zhǔn)化所有 IP 地址將是一種合理的方法。我將如何處理這些解決方案?客觀上,其中一個(gè)比另一個(gè)更好嗎?(這應(yīng)該是一個(gè)允許的問題,因?yàn)槲也皇窃谡髑髠€(gè)人意見?。?
1 回答

慕妹3242003
TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超6個(gè)贊
事實(shí)證明,選項(xiàng) 2 非常簡單:只需.MapToIPv6()
在比較之前在兩個(gè)地址上運(yùn)行即可。我認(rèn)為這可能是最好的解決方案,原因很簡單,當(dāng)/如果這也與 IPv6 地址一起使用時(shí),它顯然不會導(dǎo)致任何問題!
- 1 回答
- 0 關(guān)注
- 102 瀏覽
添加回答
舉報(bào)
0/150
提交
取消