php - REMOTE_ADDR 是否可能为空?

标签 php networking webserver

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

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

最佳答案

理论上是可以的,这取决于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.

关于php - REMOTE_ADDR 是否可能为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4278982/

相关文章:

linux -/etc/resolv.conf 中指定的超时值会做什么?

javascript - 使用 Cowboy 作为 Express JS 的 HTTP 网络服务器

php - password_verify 不验证哈希

php - 使用 preg_replace 转换缩进(无回调)

c++ - 同时打开 TCP

java - 检测 TCP/IP 数据包丢失

java - 带 PrintWriter 的简单 Java 服务器 - 向浏览器发送响应时出现问题

java - 避免对每个请求进行 SPNEGO 身份验证

php - 用于将多个值插入 HTML 表单上的单独行的数据库设计

php - 将旧版 Ajax 脚本集成到 CakePHP 中