HTTPとは?
HTTPとはHyper Text Transfer Protocol(ハイパー テキスト トランスファー プロトコル)の略で、ブラウザとサーバー間の通信手段です。
WebサーバはHTTPというプロトコルを用いてクライアントと通信します。HTTP通信はクライアント側のリクエストから始まり、サーバはこれにレスポンスを返します。リクエストではメソッドと呼ばれるもので動作を指定します。
メソッドには主に2種類あり、GETはデータの取得、POSTはデータの送信を表します。
また、「http」ではなく「https」となっている場合がありますが、これはHyper Text Transfer Protocol Secure(ハイパー テキスト トランスファー プロトコル セキュア)といって、「httpよりもセキュリティがしっかりしている通信」という意味です。
例をあげると、お問い合わせフォームのついたページから、メールアドレスなどを送信するとき、サーバーと通信中にハッカーに情報を盗まれないよう、httpsを使って通信するといった具合で使われます。
GETメソッド
GETメソッドの例としてhttps://leaclaw-media.comにアクセスする場合の通信の様子を見てみましょう。
まず、クライアント(主にブラウザ)がWEBサーバに以下のようなリクエストを送ります。
GET /index.html HTTP/1.1
Host: www.leaclaw-media.com
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 25069
Date: Fri, 10 May 2018 06:17:55 GMT
(コンテンツ本体)
これは、www.leaclaw-media.comというホスト名のサーバに対し、GETメソッドで/index.htmlというURLを要求していることを表します。これを受けてサーバは以下のようなレスポンスを返します。先頭行にある200はステータスコードと呼ばれ、レスポンスの意味を表しています。「200 OK」「403 Forbidden」「404 Not Found」など様々なものがあります。
2行目のContent-Typeは送信したファイルの種類を表しています。この場合はHTMLファイルですので「text/html」となっています。 最後に1行の空行を挟み、ファイル本体が送信されます。 これを受けてクライアントはファイルの内容を表示します。
POSTメソッド
こPOSTメソッドは掲示板などの動的なコンテンツに用いられます。例として実在しない掲示板に「example」という名前で「こんにちは」と書き込みする際の通信の様子を見てみましょう。
まず、クライアントがWEBサーバに以下のようなリクエストを送ります。(実在しないため実際にアクセスすると「404 Not Found」となります。)
POST /write.php HTTP/1.1
Host: www.team-lab.com
Content-Length: 93
name=teamlab&text=%82%B1%82%F1%82%C9%82%BF%82%CD
POSTの場合はレスポンスと同じように最後に1行の空白を挟みデータを送信します。データは&で区切られ、各データごとに データの識別名=データ本体 という構造になっています。
また、日本語などの送信できない文字は「%xx」(xは16進数)という形式に変換が行われてから送信されます。この変換をURLエンコードといいます。
サーバではデータを処理するプログラムが起動し、掲示板の更新処理などを行った後にGETの場合と同様にレスポンスを返します。
まとめ
今回説明した流れは、わかりやすくするために細かい部分は書いていません。
各自で実際の通信を見ながら理解を深めていくのがオススメです。
他の各項目の詳細については、また別の機会に学んでいきましょう。