【问题标题】:apache_request_headers() versus $_SERVERapache_request_headers() 与 $_SERVER
【发布时间】:2015-06-23 22:14:37
【问题描述】:

据我所知,apache_request_headers() 提供的信息与$_SERVER 相同,但键值略有不同。为什么有人应该使用apache_request_headers() 而不仅仅是从$_SERVER 获取这些信息?我在 Centos 上使用 Apache 运行 PHP 5.3.18。谢谢

编辑。来自$_SERVERapache_request_headers() 的相同数据

Jun  2 08:50:53 localhost httpd: HTTP_HOST: www.badobe.com
Jun  2 08:50:53 localhost httpd: Host: www.badobe.com
Jun  2 08:50:53 localhost httpd: HTTP_USER_AGENT: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0
Jun  2 08:50:53 localhost httpd: User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0
Jun  2 08:50:53 localhost httpd: HTTP_ACCEPT: */*
Jun  2 08:50:53 localhost httpd: Accept: */*
Jun  2 08:50:53 localhost httpd: HTTP_ACCEPT_LANGUAGE: en-US,en;q=0.5
Jun  2 08:50:53 localhost httpd: Accept-Language: en-US,en;q=0.5
Jun  2 08:50:53 localhost httpd: HTTP_ACCEPT_ENCODING: gzip, deflate
Jun  2 08:50:53 localhost httpd: Accept-Encoding: gzip, deflate
Jun  2 08:50:53 localhost httpd: HTTP_REFERER: http://www.badobe.com/demo/administrator/index.php?cid=3
Jun  2 08:50:53 localhost httpd: Referer: http://www.badobe.com/demo/administrator/index.php?cid=3
Jun  2 08:50:53 localhost httpd: HTTP_COOKIE: PHPSESSID=feg3ecd4rsefvd03mgg6qear21
Jun  2 08:50:53 localhost httpd: Cookie: PHPSESSID=feg3ecd4rsefvd03mgg6qear21
Jun  2 08:50:53 localhost httpd: HTTP_CONNECTION: keep-alive
Jun  2 08:50:53 localhost httpd: Connection: keep-alive
Jun  2 08:50:53 localhost httpd: HTTP_IF_MODIFIED_SINCE: Sun, 02 Jun 2013 15:48:42 GMT
Jun  2 08:50:53 localhost httpd: If-Modified-Since: Sun, 02 Jun 2013 15:48:42 GMT
Jun  2 08:50:53 localhost httpd: HTTP_CACHE_CONTROL: max-age=0
Jun  2 08:50:53 localhost httpd: Cache-Control: max-age=0

【问题讨论】:

    标签: php apache


    【解决方案1】:

    因为 apache_request_headers() 返回当前请求中所有 HTTP 标头的关联数组,而 $_SERVER 提供的远不止这些

    • 标题详细信息
    • 路径详情
    • 脚本位置

    【讨论】:

    • 感谢 Starx。 apache_request_headers() 中有什么不同或新的东西,而 $_SERVER 中没有?
    • 再次感谢 Starx。但是apache_request_headers() 不是多余的吗?请参阅我编辑的原始帖子。它提供了哪些新信息?此外,它是否比仅访问 $_SERVER 数组在微观上慢?
    【解决方案2】:

    我猜这个函数只适用于 Apache。但这只是一个疯狂的猜测

    此外,我猜该函数返回所有标头,我认为 $_SERVER 包含一组预定义的标头

    【讨论】:

      【解决方案3】:

      apache_request_headers 不是(完全)可移植的,$_SERVER 也不是完全完整的。最具体地说,$_SERVER 从不包含任何 Authorization 标头,无论 PHP 是否可以在内部处理其值。

      自 5.4.0 起,apache_request_headers 已被修补,以显示 CGI 部署中的所有标头。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-09-22
        • 2013-08-12
        • 2020-03-15
        • 1970-01-01
        • 2010-09-29
        • 1970-01-01
        • 2011-09-29
        • 1970-01-01
        相关资源
        最近更新 更多