今日は久しぶりにIT関連の内容です。
最近Webアプリの開発をすることも多いのですが、HTTPについて(特に中身について)基礎的なことがわかっていなかったので、
ちょっとまとめてみようかと思います。
HTTPリクエスト
HTTPリクエストは大きく2つに分けれれる。
1.リクエスト・ライン
1行目。メソッド、URI、HTTPバージョンで構成される。
内容 | 説明 | 例 |
---|---|---|
scheme | 通信に使用するプロトコルを指定する。 | http、https |
method | リクエストメソッド。リソースに対して実行したいアクションを指定する。 | GET(URIで指定した情報を要求)、POST(データを渡す)。 |
2.メッセージ・ヘッダ
内容 | 説明 | 例 |
---|---|---|
Accept | Webクライアントが受け取ることができるデータの種類の記述。テキストだったら、text/plain。画像ならimage/ipegなどと指定する。 | */*、text/html、text/plain、image/ipeg |
Accept-Language | Webクライアントが受け取ることができる言語の種類。 | ja、en-US |
User-Agent | 利用しているWebブラウザの種類やバージョン。 | Mozilla/5.0 (省略) |
HTTPレスポンス
※HTTPレスポンスは1回で1つのリソースを取得する。そのため、画像などがあると、その数分レスポンスが帰ってくる。
WebブラウザはHTMLを解析する過程でHTML内にimgタグが含まれていれば、imgタグのsrc属性に指定されている画像を再度取得する。
HTTPレスポンス大きく3つに分けれれる。
1.ステータスライン
HTTPのバージョン、ステータスコードが入っている。
2.メッセージヘッダ
内容 | 説明 | 例 |
---|---|---|
Date | メッセージが発信された日時が入っている。 | Mon, 04 Nov 2019 07:21:10 GMT |
Server | 要求を処理するサーバが使用するソフトウェアの情報が入っている。 | ja、en-US |
Content-Type | どのような種類のデータが送られたかが入っている。 | text/html; |
Location | リクエストの結果で別のURLを参照させるのに使用する。HTTPレスポンスのこのヘッダを見つけると、そのURLに対して再度GETリクエストを発行する。例えばログインに成功した場合に、別の画面に遷移させる時に使用する。(最初に要求したURLとは異なるURLに誘導することをリダイレクトという。)この時のステータスコードは302が使われる。 | Location:〜〜〜 |
3.メッセージボディ
HTMLファイルの内容がそのまま入っていたり、画像ファイルの場合は、画像データがバイナリ形式で入っている。
GET、POSTについて
GET
- URLに「?パラメータ1=値1&パラメータ2=値2」の形式でクエリ文字を追加して、データを渡す。
- URLにパラメータが入っていると、重要な情報が漏洩してしまう。
- URLの長さは255文字までという制限もある。
- 検索結果をお気に入りとして保存させておくことができる。
POST
- パラメータはメッセージボディに入っている。(メッセージボディは長さの制限がない。)。形式は、「パラメータ1=値1&パラメータ2=値2」。
- URL内にパラメータが入っていないので、情報漏洩しにくい。