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 頭信息,確保請求與響應的準確性。