子育てエンジニアブログ

子育てに励むシステムエンジニア(SE)のブログ

HTTPについて勉強してみた

今日は久しぶりに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内にパラメータが入っていないので、情報漏洩しにくい。