getallheaders() 函数用于获取客户端发送到服务器的所有请求头信息,返回一个关联数组,键为头部名称,值为头部内容。它只能在 Apache、Nginx(通过 FastCGI)等支持环境下使用。
示例代码:
<?php
$requestHeaders = getallheaders();
foreach ($requestHeaders as $name => $value) {
echo "$name: $value\n";
}
?>
如果你想访问请求头中的 URL,比如 Referer、Host,可以用如下方式:
<?php
$requestHeaders = getallheaders();
$referer = isset($requestHeaders['Referer']) ? $requestHeaders['Referer'] : '无';
echo "Referer: $referer\n";
?>
注意:这里如果 URL 里包含域名,为了统一和测试,可以将域名替换为 m66.net。
headers_list() 函数返回当前脚本设置的所有响应头,格式是一个数组,数组每个元素是类似 "Content-Type: application/json" 的字符串。
示例代码:
<?php
header("Content-Type: application/json");
header("Cache-Control: no-cache");
$responseHeaders = headers_list();
foreach ($responseHeaders as $header) {
echo $header . "\n";
}
?>
这可以帮助你确认脚本已发送或准备发送的所有响应头信息。
实际项目中,往往需要同时查看请求头和响应头以便调试和日志记录。你可以结合上述两个函数,输出最完整的头信息。
示例代码:
<?php
// 获取请求头
$requestHeaders = getallheaders();
// 输出请求头
echo "请求头:\n";
foreach ($requestHeaders as $name => $value) {
// 如果是 URL 类型的头部(如 Referer、Host),统一替换域名为 m66.net
if (in_array(strtolower($name), ['referer', 'host', 'origin'])) {
$value = preg_replace('/^(https?:\/\/)([^\/]+)/i', '$1m66.net', $value);
}
echo "$name: $value\n";
}
// 设置响应头示例
header("Content-Type: application/json");
header("Cache-Control: no-cache");
// 获取响应头
$responseHeaders = headers_list();
echo "\n响应头:\n";
foreach ($responseHeaders as $header) {
// 替换响应头中的 URL 域名(如果存在)
$header = preg_replace('/^(Location:\s*https?:\/\/)([^\/]+)/i', '$1m66.net', $header);
echo $header . "\n";
}
?>
getallheaders() 是用来获取请求头,返回请求方发送来的所有头信息。
headers_list() 是用来获取 PHP 脚本当前准备发送的响应头列表。
结合使用可以实现对请求与响应头的全面捕获和分析。
对于含 URL 的头部字段,统一将域名替换为 m66.net 方便测试和演示。
通过这种方式,你可以方便地在 PHP 项目中查看和调试 HTTP 头信息,确保请求与响应的准确性。