ログアウト: GET か POST か? 質問する

ログアウト: GET か POST か? 質問する

この質問は、一般的に GET と POST をいつ使用するかということではありません。Webアプリケーションからのログアウトを処理するためにどちらが推奨されるかという質問です。一般的な意味での GET と POST の違いについては多くの情報を見つけましたが、この特定のシナリオに対する明確な答えは見つかりませんでした。

実用主義者として、私は GET を使用する傾向があります。なぜなら、実装が POST よりもはるかに簡単だからです。単純なリンクをドロップするだけで完了します。これは、少なくとも私が思いつく限りのほとんどの Web サイトに当てはまるようです。Stack Overflow でも、ログアウトは GET で処理されます。

私が躊躇しているのは、一部の Web アクセラレータ/プロキシはページ内で見つかったすべてのリンクを取得してページを事前にキャッシュするため、ユーザーがリンクをクリックしたときに応答が速くなるという (古いとはいえ) 議論です。これが今でも当てはまるかどうかはわかりませんが、もし当てはまるとしたら、理論的には、これらのアクセラレータのいずれかを使用しているユーザーは、ログインするとすぐにアプリケーションから追い出されてしまいます。なぜなら、ユーザーがログアウト リンクをクリックしていなくても、アクセラレータがログアウト リンクを見つけて取得するからです。

これまで読んだものはすべて、 POST は「破壊的なアクション」に使用するべきであり、クエリなどのアプリケーションの内部状態を変更しないアクションは GET で処理すべきであると示唆しています。これに基づくと、ここでの本当の質問は次のとおりです。

アプリケーションからログアウトすることは破壊的なアクションとみなされますか?/アプリケーションの内部状態が変更されますか?

ベストアンサー1

使用POST

2010 年には、おそらく を使用することGETが受け入れられる答えでした。しかし今日 (2013 年)、ブラウザはユーザーが次に訪問すると「予想される」ページをプリフェッチします。

StackOverflow 開発者の 1 人が Twitter でこの問題について話しています。

GET リクエストをログオフにしてくれた銀行と、便利な URL プリフェッチを提供してくれた Chrome チームに感謝します。- Nick Craver (ニック・クレイバー2013年1月29日

おもしろい事実: StackOverflow は以前は GET 経由でログアウトを処理していましたが、現在はそうではありません。

おすすめ記事