HTTPのGETとPOSTについて

開発http

広告

webアプリケーションの開発を行っている時に、formを使用して、getやpostを使ってパラメータを別のページに渡して、必要に応じてパラメータを用いて処理を行い新たなページをレンダリングする状況がこれまでよくありました。getやpostをなんとなく理解して使っていましたが、本当に理解ができているのかということで改めてgetとpostによる通信について調べてみようと思います。

前提知識

HTTP通信

HTTPはwebサイトのページを閲覧するために使うプロトコルになります。サーバとの通信は、HTTPというプロトコルを使うことで成り立っています。ブラウザからサーバへの要求をリクエスト。サーバーからの応答がレスポンスとなります。

HTTPメソッド

HTTP通信には、HTTPメソッドというものがあり、getとpostはメソッドの一部となっています。put,patch,head,deleteなどが他に存在しています。

GETとPOSTの使い分け

GETとPOSTがHTTPでのメソッドの一つであることがわかりました。GETとPOSTは似たようなメソッドとなりますが、適切に使い分けする必要があります。ガイドラインに使い分けに関することが示されています。

  • GETメソッドは山椒の実に用いる
  • GETメソッドは副作用ないことが期待される
  • 秘密情報の送信にはPOSTメソッドを用いること

副作用が意味することとして、リソースの取得以外のことを意味しています。
GEtメソッドではURL上にパラメータを渡す様になります。また、URLに関しても文字数制限がありますので、その場合はPOSTによってパラメータを渡すことになります。

秘密情報の送信にはPOSTメソッドを用いることが良い理由

GETを使うことによる影響

  • URLにかかれているパラメータの情報がReferer経由で漏洩してしまう
  • パラメータがアクセスログにのこる

Refererとは

リクエストメッセージに”Referer”というヘッダがつくことがある。このヘッダには、リンク元のURLを示すものであり、外部サイトに飛んだ際に、GETのパラメータがそのままURLに書かれていると情報が漏洩してしまうことになります。

GETではブックマーク登録ができる

パラメータの情報を持っているので、そのページにレンダリングされているページをブックマーク登録することができます。

広告