解 説

HTTPの基本

HTTP(HyperText Transfer Protocol)とはブラウザがサーバーにファイルを要求する方法
リクエスト)や、サーバーがブラウザへファイルを返す方法(レスポンス)の規則です。

http

リクエストやレスポンスには必ずヘッダーと場合によっては本文が含まれます。

Firefoxでリクエストヘッダやレスポンシブヘッダを確認する場合はADD-ONSのLive HTTP Headersを使用します。

HTTPリクエストの例

GET /index.html HTTP/1.1
これはGETメソッドを使用してindex.htmlをリクエストしています。
さらに、私はHTTP/1.1をサポートしていますと伝えています。

次にUserAgentヘッダ(Webブラウザの固有情報)やAcceptヘッダ(利用可能なアプリケーション メディアタイプ。複数指定、優先度指定も可能)が続きます。
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:28.0) Gecko/20100101 Firefox/28.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ja,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate

ヘッダ情報の後には何も含まれない空の行が送られます。これはヘッダ終了の印です。
メソッドにPOSTを使用した場合はヘッダ以外にデータが追加されます。

Webサーバー・ソフトApache(アパッチ)は、WebブラウザからHTTPリクエストを受け取ると、その内容を解析します。メソッドを調べ、Webブラウザの要求内容を確認します。

HTTPレスポンスの例

Webサーバーはリクエストを受け取るとレスポンスを返します。最初の行は次のようになります。

HTTP/1.1 200 OK
プロトコルのバージョンがHTTP/1.1でステータスコード200はリクエストが成功したことです。ファイルがない場合は404を返します。

その後に追加情報が入ります。

Date: Tue, 22 Apr 2014 13:27:31 GMT
Server: Apache/2.2.25
X-Pingback: http://itstudio.co/xmlrpc.php

レスポンスヘッダの設定

リクエストやレスポンスはヘッダがあってその後に本文が続くことになります。
なんらかの理由でヘッダを自分で設定する必要がでた場合、例えばHTML以外の内容を返したいとか、ページの有効期限を設定したいとか、ブラウザをリダイレクトしたい場合などheader()関数を使用します。

header()関数を使用する場合注意が必要です。本文を返信する前にヘッダを設定しなければなりません。
header()関数の使用例
ページを強制的にジャンプさせる

ジャンプさせるにはheader()関数をページの先頭に記述する必要があります。
header()は、『なにか表示した後』では動きません。と言ったタグが表示されていても動作しなくなります。