Web技術の基礎
HTTPはステートレスなプロトコルである。このことと、Webサイトでログインした状態を保つ一般的な方法の説明として、正しいものはどれか。
- Aサーバは同じTCP接続で届いたリクエストをすべて覚えているので、ブラウザが接続を切らない限り、ログインした状態がそのまま続く
- BHTTP自体がログインした利用者を記録する仕組みをもつので、Webアプリケーションの側では状態を保つための処理を何もしなくてよい
- CHTTP自体はリクエストどうしの関係を覚えないので、サーバが発行したセッションIDをCookieで受け渡し、ブラウザが毎回送り返す
答えと解説を見る
正解:C. HTTP自体はリクエストどうしの関係を覚えないので、サーバが発行したセッションIDをCookieで受け渡し、ブラウザが毎回送り返す
ステートレスとは、各リクエストが独立して扱われ、プロトコルとしては前のリクエストの内容を覚えていないことです。サーバが状態を持たなくてよいので、どのサーバでもリクエストを処理でき、台数を増やしやすい利点があります。ログインのように状態を保ちたいときは、サーバが Set-Cookie ヘッダでセッションIDを渡し、ブラウザは同じサイトへのリクエストに Cookie ヘッダで自動的に付けて送ります。サーバは受け取ったIDを手がかりに、自分の側に保存した利用者の情報(セッション)を探します。
- A. TCP接続を使い回すことと、ログインの状態を覚えることは別です。接続は途中で切れることもあり、HTTPは同じ接続の中でも前のリクエストを覚えていません。
- B. HTTP自体はログインの状態を記録しないので、Cookieやトークンを使ってアプリケーションの側で管理します。
- C. 正しい。セッションIDをCookieで受け渡して、リクエストを利用者に結び付けます。