cookieにはどういう用途があるのか?
httpをステートフルにする代表格はCookieを使ったセッション管理
です。RESTの視点から見ると、Cookieを使ったセッション管理は間違ったhttpの拡張
です。ただ、REST的に間違っているからといって、Cookieを使ったフォーム認証をやめるわけにはいかない
ことも事実です。Cookieは、ステートレスサーバの利点をあえて捨てることを理解したうえで、必要最低限に利用
しましょう。
まだまだステートレス・ステートフルの利点をまだ理解していない。理解が必要だ。
Cookie の用途
通常、サーバーは HTTP Cookie のコンテンツを 使用して、
さまざまなリクエストが同じブラウザー/ユーザーから送られたものかどうかを判断し、その後、必要に応じて個人設定または一般的なレスポンスを発行
します。以下では、非常にシンプルなログインシステムについて説明します。1.ユーザーは、例えばフォーム送信により、ログイン資格情報をサーバーに送信します。
2.資格情報が正しい場合、サーバーはユーザーがログインしたことを示すように UI を更新し、
ブラウザー上のログイン状態を記録するセッション ID
を含むクッキーを返します。3.後日、ユーザーは同じサイトの別のページに移動します。ブラウザーは、ユーザーがまだサインインしていると認識していることを示すために、セッション ID を含むクッキーを、対応するリクエストとともに送信します。
4.サーバーはセッション ID をチェックし、有効であれば、ユーザーに新しいページの個人設定版を送信します。無効であれば、セッション ID は削除され、ユーザーにはページの一般版が表示されます(あるいは、「アクセスが拒否されました」というメッセージが表示され、再度サインインするよう求められる場合もあります)。
- セッション管理: ユーザーの
ログイン状態
、ショッピングカート、ゲームのスコア、またはその他のユーザーセッションに関するサーバーが覚えておくべきその他のもの。- パーソナライズ: 表示言語や UI テーマのようなユーザー設定。
- トラッキング: ユーザーの行動の記録および分析。
ステートレスの利点とは?
cookieの利点とは
多分ステートフルな通信ができるからステートレスの欠点が補えることができそうだ。
なぜ必要最低限なのか?
多分ステートフルな通信が多いと対応するサーバをスケールアウトしにくくなるから最低限にしなけれなばならないと思う。