PHP header 网络函数

  • 定义和用法

    header - 发送原生 HTTP 头
  • 版本支持

    PHP4 PHP5 PHP7
    支持 支持 支持
    5.1.2 这个函数现在可以一次性阻止多个报文信息的发送,从而作为对报文信息注入攻击的一种防护。
  • 语法

    header (string $string [, bool $replace = true [, int $http_response_code ]] )
    
    header() 用于发送原生的 HTTP 头。关于 HTTP 头的更多信息请参考 » HTTP/1.1 specification。
    请注意 header() 必须在任何实际输出之前调用,不管是普通的 HTML 标签,还是文件或 PHP 输出的空行,空格。这是个常见的错误,在通过include,require,或者其访问其他文件里面的函数的时候,如果在header()被调用之前,其中有空格或者空行。 同样的问题也存在于单独的 PHP/HTML 文件中。
  • 参数

    参数 必需的 描述
    string
    头字符串。有两种特别的头。第一种以“HTTP/”开头的 ,将会被用来计算出将要发送的HTTP状态码。 例如在 Apache 服务器上用 PHP 脚本来处理不存在文件的请求(使用 ErrorDocument 指令), 就会希望脚本响应了正确的状态码。例如header("HTTP/1.0 404 Not Found");
    第二种特殊情况是“Location:”的头信息。它不仅把报文发送给浏览器,而且还将返回给浏览器一个 REDIRECT(302)的状态码,除非状态码已经事先被设置为了201或者3xx。例如:header("Location: http://www.example.com/");
    replace 可选参数 replace 表明是否用后面的头替换前面相同类型的头。 默认情况下会替换。如果传入 FALSE,就可以强制使相同的头信息并存。例如:header('WWW-Authenticate: Negotiate'); header('WWW-Authenticate: NTLM', false);
    http_response_code 强制指定HTTP响应的值。注意,这个参数只有在报文字符串(string)不为空的情况下才有效。
  • 返回值

    没有返回值。
  • 示例

    <?php
    /*如果你想提醒用户去保存你发送的数据,例如保存一个生成的PDF文件。你可以使用» Content-Disposition的报文信息来提供一个推荐的文件名,并且强制浏览器显示一个文件下载的对话框。*/
    // We'll be outputting a PDF
    header('Content-type: application/pdf');
    
    // It will be called downloaded.pdf
    header('Content-Disposition: attachment; filename="downloaded.pdf"');
    
    // The PDF source is in original.pdf
    readfile('original.pdf'); 
    
    <?php
    /*PHP脚本总是会生成一些动态内容,而这些内容是不应该被缓存的,不管是客户端浏览器还是在服务器端和客户端浏览器之间的任何代理。我们可以像这样来强制设置浏览器和各个代理层不缓存数据:*/
    header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
    header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
    
  • 相关函数

    headers_sent() - 检测 HTTP 头是否已经发送
    setcookie() - 发送 Cookie
    http_response_code() - 获取/设置响应的 HTTP 状态码