🦔

【3分間HTTP&メールプロトコル基礎講座】第8、9回 GET、HEAD、POST

2023/02/21に公開

GETメソッド

キャッシュと条件付きGET

リクエストの開始行・・・メソッド、リクエストURI、HTTPバージョン
そのメソッドの中のGETについて

  • GETはリクエストURIで指定されたリソースの転送を要求(リソースを取得)するためのメソッド
  • webページを「見る」とは、「ファイルをダウンロード」して見ること。UAを持つ機器(=クライアント)は、このファイルを保存しておくことがきる=キャッシュ
  • 同じページをもう一度閲覧する際にはキャッシュされているファイルを見ることができる
  • 「同じページを見る場合、サーバにあるページが更新されているいないにかわらず、キャッシュのページを見てしまう場合がある」点が問題。=サーバにあるページが更新され、新しくなっていても、キャッシュに残っている古いページを見てしまうことがある。
  • 上記を解決する方法の一つ目: そのページのキャッシュの有無を制御するCache-Controlメッセージヘッダによって、クライアント側のキャッシュを制御する方法。
    • 制御:このページはキャッシュしてはいけません、このページはxxxのxx時までキャッシュされます、のようにキャッシュさせないか、キャッシュの有効期限を切ってしまう制御。
  • 上記を解決する方法二つ目: 条件付きGET。これにはIf-Modified-Sinceメッセージヘッダを使う。
    • 「もし今のキャッシュの更新日付よりも新しいならば」GETする = 条件付き

部分的GET

  • 例えば大きなファイル名アドをGETで取得するとして、ちゃんと最後まで取得できれば良いが、途中でエラーが発生した場合はやり直しになる。そういう場合に部分getで、ファイル全体のサイズはContent-Lengthでサーバ側から通知れるから、途中でエラーが発生した場合、不足分のサイズがわかる。そこで、Rangeメッセージヘッダを使い、途中からファイルを取得することができる
    • レジューム機能つきとも言われる
    • ダウンロード支援ツールで、高速・簡単にファイルのダウンロードできるものは、ファイルを分割し、それを同時に部分GETし、実現している。

HEAD、POST

  • GETと同じ動作をするが、HEADに対するレスポンスにはボディがないのが特徴
  • リクエストURIで指定されたリソースの転送を要求
  • ボディがないだけで、ステータス行やメッセージヘッダはちゃんとレスポンスに含まれる。
  • つまりステータス行やメッセージヘッダの確認を行うためのメソッド
  • リクエストURIに指定されたリソースに対し、どのようなステータス行やメッセージヘッダが返ってくるかを確かめることができる。
  • 例えばLast-Modifiedメッセージヘッダは、リソースの最終更新日を含むエンティティヘッダだが、そのファイルが更新されたかどうかが確認できる。確認したいだけなので、GETではなくHEADを使う。
  • 巡回エージェントと呼ばれるツールで更新の確認だけを行うことができるが、それはHEADを使う

POST

  • 投稿を行うメソッド
  • ボディを送信しリクエストURIに書かれたリソースに処理させることを要求するメソッド
  • POSTはリローすの取得が目的ではない

Discussion