web-dev-qa-db-ja.com

RESTful Webサービスのセッション、それはどのように機能しますか?

Webサービスでは、サーバーはどのリクエストがどのセッションに属しているかをどのようにして知るのですか?

Webアプリケーションの場合、WebサーバーはCookie(またはCookieが無効になっている場合はsessonIdクエリパラメーター)を検査するので、要求が関連付けられているセッションがわかります。しかし、残りのクライアントからのリクエストの場合、サーバーはどのようにして知るのでしょうか。

7
dnang

APIでセッション処理が本当に必要な場合は、クライアントがsession_idを処理し、必要に応じてそれをURLに追加する必要があります。これを正確に処理する方法は、テクノロジースタックによって異なります。たとえば、RailsのデフォルトはCookieですが、(有効になっている場合)URLの一部として_session_idパラメータも受け入れます。

通常、セッションIDとともにCookieに保存される関連情報は、サーバーで処理する必要があります。 Railsでは、セッションストレージをCookieストレージから、データベースに保存するか、セッションIDをキーとしてmemcachedに保存するなどのサーバーオプションの1つに切り替える必要があります。

ただし、この機能をAPIに追加する場合は、よく考える必要があります。ステートレスであることで、APIがよりシンプルで維持しやすくなります。可能であれば、クライアントに状態について心配させ、各要求ですべての必要な情報を送信することをお勧めします。 (現在のユーザーをセッションに保存する代わりにHTTP基本認証を使用するようなものです)。

8