REMOTE_ADDR可能是空白的吗?

Xeo*_*oss 4 php networking webserver

据我所知,网络服务器(Apache/Nginx $_SERVER['REMOTE_ADDR'])根据请求用户代理的声明位置提供().所以我知道他们可以撒谎,但这个值可能是空白的吗?网络接口或网络服务器是否会在没有正确形成IP的情况下接受请求?

http://php.net/manual/en/reserved.variables.server.php

Art*_*cto 5

这在理论上是可行的,因为问题取决于http服务器或至少相应的PHP SAPI.

在实践中,我没有遇到过这样的情况,除了CLI SAPI.

编辑:对于Apache,它似乎总是被设置,因为ap_add_common_vars总是将它添加到最终被Apache模块PHP SAPI读取的表中(免责声明:我对Apache内部的知识非常有限).

如果在CGI环境中使用PHP,RFC 3875中的规范似乎保证了这个变量的存在:

4.1.8.  REMOTE_ADDR

   The REMOTE_ADDR variable MUST be set to the network address of the
   client sending the request to the server.