見出し画像

HTTPリクエスト学びなおし

「HTML5プロフェッショナル認定試験」対策を兼ねた、多くを引用した個人の勉強ノートです。参考まで。
特にデザイナー、フロントサイドは通信技術界隈に疎かったりする(自分)ので、いい機会に学びなおしていきます。どんどん追記予定。

そもそもHTTP/HTTPSとは?

HTTPとは、サーバーとクライアントでWEB通信するための取り決め(プロトコル)のこと。

HTTPはHypertext Transfer Protocolの略で、
ブラウザとWebサーバ間でデータを通信する用のプロトコルです。

リクエスト(クライアント→サーバー)とレスポンス(サーバー→クライアント)によって成り立つ。このリクエスト/レスポンス終了時に状態を破棄する「ステートレス」な性質を持つ通信。

HTTPSはより安全にHTTP通信を行うためのプロトコルで、SSL/TLSで暗号化を行う。

ポート番号とは通信窓口となる番号で、どのプログラムに通信パケットを渡すのかを決定するために番号を使用する。 この番号によってWEBサービスであることが判断できる。WEBサービスで使う番号(ウェルノウン番号)はHTTPは80 、HTTPSは443

HTTPリクエストの中身

HTTPリクエストは以下三部構成で成り立つ。

1) HTTP Request Method, URL, and Protocol Version
2) HTTP Request Headers
3) HTTP Request Body

1)はリクエストラインと呼ばれ、URL、メソッド(後述)、HTTPのバージョンが含まれる。

ちなみにURLはネットワーク上のリソースを一意に管理するための記述様式で、通常のURLであれば以下の区分けがされる。
(例)http/https.www.xxxxx.com/top
http/https ... スキーム
http/https.www.xxxxx.com … オリジン
top/index.html … ディレクトリ/ファイル名

For http or https URLs, the scheme followed by '://', followed by the domain, followed by ':', followed by the port (the default port, 80 and 443 respectively, if explicitely specified).

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 」…プロキシサーバー(中継)にキャッシュする期限の秒数。

HTTPクッキー(Cookie)もブラウザでサーバーから取得したデータを保存する仕組みだが、ID/ PWなどのユーザ―情報を保存し4KB程度である。また有効期限を設定する必要がある。

3)はボディ部分で、後述のPOSTメソッドの中身はここに記載される。

HTTPリクエストメソッドとは?

WEBブラウザなどから「URL」の形式で、データのやり取りなど「動き」の指令(リクエスト)を役割ごとにわかりやすく定義したものです。

データをやりとりするためのリクエストには種類があるので、改めて列挙していきます。(今までせいぜいGETやPOSTくらいの存在しか意識してこなかった)

■ GETメソッド

データの要求。URLで識別されるデータ(リソース)を取得するために要求するメソッド。ここでのリソースとは、要求の対象のこと。
「サーバーさん、これください」。

GET is used to retrieve and request data from a specified resource in a server. GET is one of the most popular HTTP request techniques. In simple words, the GET method is used to retrieve whatever information is identified by the Request-URL.

GETメソッドは値をURLの後ろにくっつけて送るので丸見えです。

■ POSTメソッド

リソースを新規作成するべくデータを送信するメソッド。
「サーバーさん、(この内容で)これください」

Another popular HTTP request method is POST. In web communication, POST requests are utilized to send data to a server to create or update a resource. The information submitted to the server with POST request method is archived in the request body of the HTTP request.

HTTPリクエストは 開始行、ヘッダー、ボディの3部構成で、POSTメソッドの内容はボディに内包されるのでURLには表示されない。

■ PUTメソッド

リソースを更新するべくデータを送信するメソッド。
「サーバーさん、(この内容が既存なら)更新してください」

The difference between the two is that PUT requests are idempotent. This means that if you call the same PUT requests multiple times, the results will always be the same.

idempotent(ʌɪˈdɛmpətənt)はIT記事でしか見ないけれど、その操作を何回繰り返しても,1回だけ実行した時と同じ結果になることです(冪等性)。

■ DELETEメソッド

名前の通り、既存データ削除依頼。削除対象を追加して記述します。
「サーバーさん、これ消しといて」。

Making a DELETE request will remove the targeted resource.

■ HEADメソッド

GET同様データの要求だが、名前の通りヘッダー部分の内容しか返さないので中身(ボディ)を含まない。データの更新日時や、データのサイズのみを取得したい場合に、効率的にデータを取得できるとのこと。
「サーバーさん、これのヘッダ部分だけください」。

The HEAD request method is useful in recovering meta-data that is written according to the headers, without transferring the entire content. The technique is commonly used when testing hypertext links for accessibility, validity, and recent modification.

■ OPTIONSメソッド

対象リソースの通信オプション(可能なメソッド)を通知するためのもの。「サーバーさん、どんなメソッド使えますか?」。

URIに対して利用できるメソッドの一覧を取得するメソッドです。

■ CONNECTメソッド

サーバーとの接続を作るもの。SSL接続もこのトンネル化によって実現。「サーバーさん、通信経路つくりましょう」。

The CONNECT request method is used by the client to create a network connection to a web server over a particular HTTP. A good example is SSL tunneling. In a nutshell, CONNECT request establishes a tunnel to the server identified by a specific URL.
SSLなどで暗号化したデータを送信する場合、プロキシは中身のデータを判断できないため、このCONNECTメソッドにより、
中身のデータのパケットをサーバまでただ右から左に転送するようにしてもらえます。

■ TRACEメソッド

要求をそのままオウム返しするもの。接続テストなどに用いられる。
「サーバーさん聞こえますか」。

TRACE requests are used to invoke a remote, application loop-back test along the path to the target resource. 
基本はサーバまでの経路をチェックする用のメソッドで、
ちゃんとサーバまで繋がっていれば、リクエストと同じ内容が
サーバから返信されます。

以上です!何かすこしでも役に立てば嬉しいです。
コメントもお待ちしてます。

この記事が気に入ったらサポートをしてみませんか?