HTTPリクエスト学びなおし
「HTML5プロフェッショナル認定試験」対策を兼ねた、多くを引用した個人の勉強ノートです。参考まで。
特にデザイナー、フロントサイドは通信技術界隈に疎かったりする(自分)ので、いい機会に学びなおしていきます。どんどん追記予定。
そもそもHTTP/HTTPSとは?
HTTPとは、サーバーとクライアントでWEB通信するための取り決め(プロトコル)のこと。
リクエスト(クライアント→サーバー)とレスポンス(サーバー→クライアント)によって成り立つ。このリクエスト/レスポンス終了時に状態を破棄する「ステートレス」な性質を持つ通信。
HTTPSはより安全にHTTP通信を行うためのプロトコルで、SSL/TLSで暗号化を行う。
ポート番号とは通信窓口となる番号で、どのプログラムに通信パケットを渡すのかを決定するために番号を使用する。 この番号によってWEBサービスであることが判断できる。WEBサービスで使う番号(ウェルノウン番号)はHTTPは80 、HTTPSは443。
HTTPリクエストの中身
HTTPリクエストは以下三部構成で成り立つ。
1)はリクエストラインと呼ばれ、URL、メソッド(後述)、HTTPのバージョンが含まれる。
ちなみにURLはネットワーク上のリソースを一意に管理するための記述様式で、通常のURLであれば以下の区分けがされる。
(例)http/https.www.xxxxx.com/top
http/https ... スキーム
http/https.www.xxxxx.com … オリジン
top/index.html … ディレクトリ/ファイル名
2)はヘッダー部分で、各「ヘッダ名」と「値」の組み合わせが記載。ヘッダ名は以下のようなものがありますが、基本英語そのままの意味です。
「Accept-Language」ブラウザが受け入れ可能な人間の言語。
「Content-Length」メッセージボディのサイズ。
「Refer」前ページのURL。
■ ブラウザが受け入れられるコンテンツタイプ
「Accept」ヘッダに下記のようにコンテンツをMIMEタイプを指定できる。
・ Accept:text/html … HTMLファイル
・ Accept:application/json … JSONデータ
・ Accept:application/javascript … jsファイル
■ キャッシュに関わるヘッダ
サーバーから取得したデータを保存するもので、HTTPヘッダー内の下記が関連する。
「Cash-Control」…キャッシュの制御。保存の有無、有効期限の秒数(max-age)など。
「Expires」…レスポンスの有効期限を日付で設定する。
「Age 」…プロキシサーバー(中継)にキャッシュする期限の秒数。
3)はボディ部分で、後述のPOSTメソッドの中身はここに記載される。
HTTPリクエストメソッドとは?
データをやりとりするためのリクエストには種類があるので、改めて列挙していきます。(今までせいぜいGETやPOSTくらいの存在しか意識してこなかった)
■ GETメソッド
データの要求。URLで識別されるデータ(リソース)を取得するために要求するメソッド。ここでのリソースとは、要求の対象のこと。
「サーバーさん、これください」。
GETメソッドは値をURLの後ろにくっつけて送るので丸見えです。
■ POSTメソッド
リソースを新規作成するべくデータを送信するメソッド。
「サーバーさん、(この内容で)これください」。
HTTPリクエストは 開始行、ヘッダー、ボディの3部構成で、POSTメソッドの内容はボディに内包されるのでURLには表示されない。
■ PUTメソッド
リソースを更新するべくデータを送信するメソッド。
「サーバーさん、(この内容が既存なら)更新してください」。
idempotent(ʌɪˈdɛmpətənt)はIT記事でしか見ないけれど、その操作を何回繰り返しても,1回だけ実行した時と同じ結果になることです(冪等性)。
■ DELETEメソッド
名前の通り、既存データ削除依頼。削除対象を追加して記述します。
「サーバーさん、これ消しといて」。
■ HEADメソッド
GET同様データの要求だが、名前の通りヘッダー部分の内容しか返さないので中身(ボディ)を含まない。データの更新日時や、データのサイズのみを取得したい場合に、効率的にデータを取得できるとのこと。
「サーバーさん、これのヘッダ部分だけください」。
■ OPTIONSメソッド
対象リソースの通信オプション(可能なメソッド)を通知するためのもの。「サーバーさん、どんなメソッド使えますか?」。
■ CONNECTメソッド
サーバーとの接続を作るもの。SSL接続もこのトンネル化によって実現。「サーバーさん、通信経路つくりましょう」。
■ TRACEメソッド
要求をそのままオウム返しするもの。接続テストなどに用いられる。
「サーバーさん聞こえますか」。
以上です!何かすこしでも役に立てば嬉しいです。
コメントもお待ちしてます。