为什么在本地环境中IP显示为:: 1?

约翰

我正在开发一个PHP应用程序,并使用以下命令将用户的IP地址存储在数据库中 $_SERVER['REMOTE_ADDR']

这将::1在本地环境中返回(Apache在macOS Sierra上本地设置)。

我从以前的帖子中了解到这是因为没有到我的ISP的“往返”。但是,是否有任何测试方法,例如,确保$_SERVER['REMOTE_ADDR']将应用程序部署到实时(非本地)托管环境后,代码将返回正确的地址?

我所追求的效果是获得“真正的”出站IP地址,就像我访问http://www.whatsmyip.org/这样的网站时所显示的那样

将我正在构建的应用程序存储在数据库中后,它还将显示用户的IP地址。因此,作为第二个问题,如果我要编写逻辑以过滤掉显示的本地IP,我应该过滤掉::1127.0.0.1,还是还有其他过滤器

大能力

::1是您在IPv6中的“家庭”地址,就像127.0.0.1在IPv4中一样

https://zh.wikipedia.org/wiki/IPv6_address

:: 1/128 —环回地址是单播本地主机地址。如果主机中的应用程序将数据包发送到该地址,则IPv6堆栈会将这些数据包循环回同一虚拟接口上(对应于IPv4中的127.0.0.1/8)。

获取“真实”出站地址的问题是您的本地计算机可能不知道这是什么。例如,Amazon Web Services有一个服务器实际上位于其中的控制平面。因此,您计算机的IP在该控制平面内,而不是Internet内。您可以为其分配一个外部IP,但是您的计算机没有内部方法可以找到该IP。实际上,您必须执行其他操作(特定于AWS)才能获取它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么(1 == 2!= 3)在Python中评估为False?

为什么对于列表中的值,索引返回为-1?

为什么在JavaScript中“〜undefined”为-1?

为什么1月在Java日历中为0?

为什么1 === 1 === 1为假?

Java数组-为什么输出为“ 1”?

为什么1 ... 1评估为10.1?

为什么在JavaScript中(([[] === [])+ /-/)[1] ='a'和(1 + {})[(1 << 1)+1] ='b'是为什么?

为什么在C中-1> strlen(t)为真?

为什么在Python中list [-1:1]为空?

为什么“ range(2)== True中的1”评估为False?

为什么在JavaScript中,`2 << -1'为零而不是1?

为什么我的直方图条都显示为1

为什么在Python中{1} == Frozenset({1})?

为什么在JavaScript中“ 1” + +“ 1” =“ 11”但“ 1”--“ 1” = 2

为什么`1> undefined`评估为false?

为什么说退出状态为1?

为什么在下面的C ++程序中2147453647 * 2147453647的乘积显示为1,而-2147453648 * -2147453648的乘积显示为0?

为什么Matlab(使用默认short)在向量/矩阵输出中应显示为1时以科学计数法将其显示为0?

为什么[1,1,2] | [] == [1,2]在Ruby中是否为true?

为什么[] .append(1)为None

为什么arr [1]打印显示为arr [0]的内容?

为什么-1> null在PHP中为true

为什么-1 >> 1计算为-1?

为什么代码仅显示“ 1 2”?

为什么#!/ usr / bin / env将“ $ @”显示为1?

为什么在Javascript中1 =='1 \ n'为真?

为什么结果输出为1

dbeaver 中的 VARCHAR 长度为 -1。为什么?