• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • headers_list()

    (PHP 5, PHP 7)

    返回已发送的 HTTP 响应头(或准备发送的)

    说明

    headers_list(void): array

    headers_list()会返回准备发送给浏览器/客户端的 HTTP 头列表。检测这些头是否已经发送,使用headers_sent()。

    返回值

    返回数字索引的头数组。

    范例

    使用headers_list()的例子

    <?php
    /* setcookie() 会自己添加一个响应头 */
    setcookie('foo', 'bar');
    /* 添加自定义的响应头
     大多数客户端会主动忽略 */
    header("X-Sample-Test: foo");
    /* 响应中指定内容为明文 text */
    header('Content-type: text/plain');
    /* 所以会发送什么头呢? */
    var_dump(headers_list());
    ?>
    

    以上例程会输出:

    array(4) {
      [0]=>
      string(23) "X-Powered-By: PHP/5.1.3"
      [1]=>
      string(19) "Set-Cookie: foo=bar"
      [2]=>
      string(18) "X-Sample-Test: foo"
      [3]=>
      string(24) "Content-type: text/plain"
    }
    

    注释

    Note:

    数据头只会在SAPI支持时得到处理和输出。

    参见

    note that it does not return the status header
    <?php
    header('HTTP/1.1 301 Moved Permanently', true, 301);
    header('foo: bar');
    header('a: b');
    header('colon less example');
    print_r(headers_list());
    ?>
    Array
    (
      [0] => X-Powered-By: PHP/5.4.7
      [1] => foo: bar
      [2] => a: b
    )
    This function won't work for when you're running PHP from the command line. If will always return an empty array. This can be an issue when testing your project using PHPUnit or Codeception.
    To solve this, install the xdebug extension and use `xdebug_get_headers` when on the cli.
    <?php
    $headers = php_sapi_name() === 'cli' ? xdebug_get_headers() : headers_list();
    ?>
    
    Function to check if a particular header has been added to the list:
    <?php
    function header_sent($header) {
      $headers = headers_list();
      $header = trim($header,': ');
      $result = false;
      foreach ($headers as $hdr) {
        if (stripos($hdr, $header) !== false) {
          $result = true;
        }
      }
      return $result;
    }
    ?>
    

    上篇:header()

    下篇:headers_sent()