【问题标题】:Difference between REMOTE_HOST and REMOTE_ADDRREMOTE_HOST 和 REMOTE_ADDR 之间的区别
【发布时间】:2011-04-18 06:00:54
【问题描述】:

这两个变量有什么区别?

REMOTE_HOSTREMOTE_ADDR

【问题讨论】:

    标签: apache server-variables


    【解决方案1】:

    来自RFC-3875

    • REMOTE_ADDR:REMOTE_ADDR 变量必须设置为网络地址 客户端向服务器发送请求。
          REMOTE_ADDR  = hostnumber
          hostnumber   = ipv4-address | ipv6-address
          ipv4-address = 1*3digit "." 1*3digit "." 1*3digit "." 1*3digit
          ipv6-address = hexpart [ ":" ipv4-address ]
          hexpart      = hexseq | ( [ hexseq ] "::" [ hexseq ] )
          hexseq       = 1*4hex *( ":" 1*4hex )
    
    • REMOTE_HOST:REMOTE_HOST 变量包含完全限定域名 客户端向服务器发送请求,如果可用,否则 空值。完全限定域名采用如下所述的形式 RFC 1034 [17] 的第 3.5 节和 RFC 1123 [12] 的第 2.1 节。 域名不区分大小写。
    The REMOTE_HOST variable contains the fully qualified domain name of
       the client sending the request to the server, if available, otherwise
       NULL.  Fully qualified domain names take the form as described in
       section 3.5 of RFC 1034 [17] and section 2.1 of RFC 1123 [12].
       Domain names are not case sensitive.
    
          REMOTE_HOST   = "" | hostname | hostnumber
          hostname      = *( domainlabel "." ) toplabel [ "." ]
          domainlabel   = alphanum [ *alphahypdigit alphanum ]
          toplabel      = alpha [ *alphahypdigit alphanum ]
          alphahypdigit = alphanum | "-"
    

    【讨论】:

      【解决方案2】:

      远程:是位于某个遥远位置的计算机,从中检索到的数据通常是指专用网络或公共互联网中的服务器。

      Remote_host 将返回 REMOTE_ADDR 或者是 IP 地址。

      【讨论】:

        【解决方案3】:

        1. $_SERVER['REMOTE_ADDR'] - 这包含客户端的真实 IP 地址。这是您可以从用户那里找到的最可靠的价值。

        2。 $_SERVER['REMOTE_HOST'] - 这将获取用户正在查看当前页面的主机名。 但是要让这个脚本工作,必须在 httpd.conf 中配置 Hostname Lookups On。

        【讨论】:

        • 次要问题,但$_SERVER['REMOTE_ADDR'] 是存储在$_SERVER 超全局中的PHP“已处理”值。问题是专门指同名的 Apache 服务器变量 - 这些不一定是相同的值(但在这种情况下应该是)。例如。 REQUEST_URI Apache 服务器变量和$_SERVER['REQUEST_URI'] PHP 超全局变量可能完全不同。
        【解决方案4】:

        REMOTE_HOST 与客户端(即发出请求的计算机)的 主机名 相关。 REMOTE_ADDR 指的是客户端的IP 地址

        有时主机名无法解析,因此 REMOTE_HOST 将返回 REMOTE_ADDR 或 IP 地址。

        【讨论】:

        • 我想说的是,如果中间有代理服务器,可能会看到意想不到的结果。
        • REMOTE_HOST 也只设置为 host 如果在服务器上启用了HostnameLookups,否则它总是包含 IP 地址。 (HostnameLookups 默认关闭 - 性能原因。)
        • 确实,REMOTE_HOST 可能无法解析。我看到 phpinfo 中显示了 REMOTE_HOST,但是当我稍后重新加载页面时,它就消失了。这个问题完全破坏了我的 phpmyadmin root 访问权限,我不得不将“allow root from localhost”替换为“allow root from ::1”(apache 使用的是 IPv6,因此 127.0.0.1 将不起作用)。任何想法为什么 REMOTE_HOST 有时不可用?
        猜你喜欢
        • 2013-05-27
        • 2011-09-26
        • 1970-01-01
        • 1970-01-01
        • 2021-12-25
        • 2020-05-10
        • 2014-09-20
        • 2010-10-28
        • 2015-10-04
        相关资源
        最近更新 更多