WordPressのコアファイルを見ていたらheader()という関数が出てきました。PHPの説明を読むと
header — 生の HTTP ヘッダを送信する
http://php.net/manual/ja/function.header.php
と説明されていましたが、そもそも生のHTTPヘッダって何なんでしょう。
「生の」「HTTP」「ヘッダ」それぞれ1つずつ見ていきます。
HTTPとは、ヘッダとは
よくURLで見るhttpですが、そもそもこれは「Hyper Text Transfer Protocol」の略で、
ハイパーテキスト(他の文書へのリンクを埋め込んだテキストのこと)を転送するためのルールっていう意味だそうです。
それで、このHTTPというルールに基づいてWebクライアント(ブラウザ)とWebサーバは互いにリクエスト(HTTPリクエスト)をしたりレスポンス(HTTPレスポンス)を返したりします。
HTTPリクエストもHTTPレスポンスもある書式に従って書かれています。今回出てきたヘッダはブラウザ情報やコンテンツの種類、リダイレクト先といった細々とした情報のことみたいです。
- HTTPリクエストとHTTPレスポンスの中身
HTTPリクエストは「HTTPリクエスト行」「HTTPリクエストヘッダ」「データ本体」
HTTPレスポンスは「レスポンス状態行」「HTTPレスポンスヘッダ」「データ本体」
という感じで3部構成になっています。
このうちの2つ目が今回出てきた「ヘッダ」のことですね。
生の、とは?
「生の」がどういう意味かは分かりませんでした。。。
まぁよく分かんないんですが「任意のヘッダをそのまま送信してくれる」って考えておけば間違いないのかな。
サンプル
例えばこんな感じファイルを2つ用意して、main.phpをWebサーバに要求すると、Webクライアントに「Location: redirect.php」っていう内容のヘッダが送信されるので、このヘッダに従ってWebクライアントはredirect.phpを要求した結果、ブラウザで「Hello World!」が表示されるみたいです。
Locationはヘッダの一つで、ブラウザが次に表示すべきURLが記述されます。なので、結果的にredirect.phpがWebサーバに要求されることになるわけですね。
main.php
1 2 3 4 | <?php header('Location: redirect.php'); exit; ?> |
redirect.php
1 2 3 | <?php echo 'Hello World!' ?> |