在 PHP 中,header() 函数是一个非常重要的工具,用于向客户端发送原始 HTTP 报文头。通过它,我们可以控制页面的缓存、重定向、内容类型等。与此同时,headers_list() 函数则可以帮助我们查看当前已经设置的所有 HTTP 头信息,这对于调试和理解程序行为非常有帮助。
本文将详细介绍如何使用 header() 和 headers_list(),并通过代码示例帮助你掌握它们的用法。
header() 函数的基本语法如下:
header(string $header, bool $replace = true, int $response_code = 0): void
$header:要发送的 header 内容,比如 Content-Type: application/json。
$replace:是否替换前面同名的 header,默认为 true。
$response_code:可选参数,用于设置 HTTP 响应状态码。
常见用法包括:
header('Location: https://m66.net/new-page.php');
exit;
这行代码会让浏览器重定向到 https://m66.net/new-page.php。
header('Content-Type: application/json');
echo json_encode(['status' => 'ok']);
这会告诉客户端,接下来的内容是 JSON 格式。
header('Cache-Control: no-cache, no-store, must-revalidate');
header('Pragma: no-cache');
header('Expires: 0');
这些 header 用于禁止缓存,确保用户每次访问都获取最新内容。
有时候我们在代码中多次调用 header(),但具体发送了哪些 header 呢?这时 headers_list() 就派上用场了。
<?php
header('Content-Type: text/plain');
header('X-Custom-Header: CustomValue');
header('Location: https://m66.net/redirected');
$headers = headers_list();
echo "当前设置的 HTTP 头:\n";
foreach ($headers as $h) {
echo $h . "\n";
}
?>
说明:
我们设置了三个 header。
然后用 headers_list() 获取到当前所有待发送的 header,并逐行输出。
运行这个脚本后,你会看到类似这样的输出:
Content-Type: text/plain
X-Custom-Header: CustomValue
Location: https://m66.net/redirected
请注意:
如果脚本已经输出了内容(如 echo),再调用 header() 会导致“header already sent”错误。
所以,修改 header 时应确保它们在任何输出发生之前。
相关标签:
header