HTTPのGETとPOSTについて
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ではブックマーク登録ができる
パラメータの情報を持っているので、そのページにレンダリングされているページをブックマーク登録することができます。
ディスカッション
コメント一覧
まだ、コメントがありません