getAllheaders()関数は、クライアントがサーバーに送信したすべての要求ヘッダー情報を取得し、連想配列を返すために使用されます。キーはヘッダー名、値はヘッダーコンテンツです。 Apache、Nginx(FastCGI経由)などのサポート環境でのみ使用できます。
サンプルコード:
<?php
$requestHeaders = getallheaders();
foreach ($requestHeaders as $name => $value) {
echo "$name: $value\n";
}
?>
リファラーやホストなど、リクエストヘッダーのURLにアクセスする場合は、次の方法を使用できます。
<?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";
}
?>
これにより、スクリプトが送信されたことを確認するか、すべての応答ヘッダー情報を送信する準備ができていることを確認できます。
実際のプロジェクトでは、リクエストヘッダーとデバッグとロギングの応答ヘッダーを表示する必要があることがよくあります。上記の2つの関数を組み合わせて、最も完全なヘッダー情報を出力できます。
サンプルコード:
<?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ヘッダーを簡単に表示およびデバッグして、リクエストと応答の正確性を確保できます。