主に、WebブラウザとWebサーバとの間で使われる通信プロトコルです。ページを要求する文字列をサーバに送ると、サーバの応答でHTMLが得られます。
前述した通り、ブラウザから接続して、サーバーに1つファイルを要求(リクエストメッセージと呼ぶ。)すると、 それに対する応答(レスポンスメッセージと呼ぶ)が返るというシンプルなプロトコルです。 以下にクライアント(ブラウザ)で閲覧する時、サーバに送信するリクエストメッセージ例を示します。
GET / HTTP/1.1
HOST: 192.168.10.101
connection: keep-alive
upgrade-insecure-requests: 1
user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36
accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
referer: http://118.241.153.53:8080/all/a200/index.jsp
accept-encoding: gzip, deflate
accept-language: ja-JP,ja;q=0.9,en-US;q=0.8,en;q=0.7
cookie: JSESSIONID=997C9CA61189C3F9807BE40167CBC4BD
if-modified-since: Thu, 12 Sep 2024 15:00:39 GMT
上記を受信したサーバ側が応答するレスポンスメッセージの例を示します。
HTTP/1.1 200 OK
Server: Microsoft-IIS/5.0
Content-Location: http://192.168.10.101/Default.htm
Date: Tue, 04 Jul 2006 08:10:01 GMT
Content-Type: text/html
Accept-Ranges: bytes
Last-Modified: Tue, 24 Jan 2006 02:03:27 GMT
ETag: "a4fe915d8a20c61:a57"
Content-Length: 1915
<html>
<head>
<title>学生連絡ホームページ</title>
以下省略
以下で各メッセージの内容を説明します。
ヘッダー部 | メソッド名 | URI | HTTPバージョン表記 | CR LF | ||
フィールド名 | : | フィールドの値 | CR LF | |||
CR LF (空の改行) | ||||||
ボディ部(Webサーバーに送るデータ) | CR LF |
■色は、リクエスト・ラインと呼ばれる部分で、サーバーにある 『何を(URI)をどのように欲しいか?』を表現している部分です。 代表的メソッド名は、GET と PUT があります。PUTの場合は、 FORMタグの内容をWebサーバーに送るデータのところのタイミングで送信します。 URI(Uniform Resource Identifier)は、サーバーにある指定のファイルを表現する方法で、 例えば、http://www001.upp.so-net.ne.jp/yuu/dic.htmlのような表現です。
■色は、メッセージヘッダーと呼ばれる部分で、 サーバーに送る付加的な情報を配置します。付加する情報の種類や数はブラウザによってさまざまですが、 HOSTのフィールド名は必項で、サーバーのアドレスまたはサーバー名を指定します。 以下によく使われるヘッダーのフィールド名を示します。
Accept | 受信可能なデータタイプ |
Accept-Charset | 受信可能なキャラクタセット |
Accept-Enccding | 受信可能なエンコーディング |
Accept-Language | 受信可能な言語 |
Host | リクエストの最終的な送り先となるサーバのアドレスまたはドメイン名とポート番号(HTTP/1.1では必項) |
User-Agent | Webブラウザの種類 |
Referer | 参照元のリンクページのURI |
If-Modified-Since | ローカルにキャッシュに記録した更新日時を値で設定して、それより新しい場合だけ要求する レスポンスが「304 Not Modified」であれば、ブラウザはキャッシュ情報で表示する。 |
ヘッダー部 | HTTPバージョン表記 | 応答ステータスコード | 応答の文字列表現 | CR LF | ||
フィールド名 | : | フィールドの値 | CR LF | |||
CR LF (空の改行) | ||||||
ボディ部(ブラウザに送るHTMLなどのデータ) | CR LF |
■色は、レスポンス・ラインと呼ばれる部分で、サーバーの実行結果を知らせる働きです。 応答ステータスコードは次のように決められています。
1xx | 処理経過情報の通知 |
2xx | 正常終了 |
3xx | 別のアクションが必要なことを通知 |
4xx | クライアント側のエラー |
5xx | サーバー側のエラー |
■色の部分は、クライアント(ブラウザ)に送る付加的な情報を配置します。 付加する情報の種類や数は、リクエストによってさまざまですが、Content-Type: の指定がないと、 ブラウザに送るデータを どう扱うが不明となるので必項と言えるでしょう。また、Content-Length: で ブラウザに送るデータのバイト数を指定します。 以下によく使われるヘッダーのフィールド名を示します。
Server | サーバー種類 | 例 |
---|---|---|
Date | 送日時 | |
Set-cookie | 書き込みクッキー情報 | Set-Cookie: ABC=123ab; Expires=Sun, 03-Jul-2016 02:26:19 GMT |
Content-Type | ボディ部のデータの種類 | Content-Type: text/html; charset=Shift_JIS |
Content-Length | ボディ部のデータの長さ | |
Cache-Control | 「no-cache」の設定であれば、ブラウザはキャッシュしないように働く |
以上のヘッダーは空の改行(CR LF)で区切られ、 この直後からがボディ部(ブラウザに送るデータ)で、 ここにリクエストされたHTMLなどのイメージが入ります。