Web技術の基礎

HTTPはステートレスなプロトコルである。このことと、Webサイトでログインした状態を保つ一般的な方法の説明として、正しいものはどれか。

  1. Aサーバは同じTCP接続で届いたリクエストをすべて覚えているので、ブラウザが接続を切らない限り、ログインした状態がそのまま続く
  2. BHTTP自体がログインした利用者を記録する仕組みをもつので、Webアプリケーションの側では状態を保つための処理を何もしなくてよい
  3. CHTTP自体はリクエストどうしの関係を覚えないので、サーバが発行したセッションIDをCookieで受け渡し、ブラウザが毎回送り返す
答えと解説を見る

正解:C. HTTP自体はリクエストどうしの関係を覚えないので、サーバが発行したセッションIDをCookieで受け渡し、ブラウザが毎回送り返す

ステートレスとは、各リクエストが独立して扱われ、プロトコルとしては前のリクエストの内容を覚えていないことです。サーバが状態を持たなくてよいので、どのサーバでもリクエストを処理でき、台数を増やしやすい利点があります。ログインのように状態を保ちたいときは、サーバが Set-Cookie ヘッダでセッションIDを渡し、ブラウザは同じサイトへのリクエストに Cookie ヘッダで自動的に付けて送ります。サーバは受け取ったIDを手がかりに、自分の側に保存した利用者の情報(セッション)を探します。

  • A. TCP接続を使い回すことと、ログインの状態を覚えることは別です。接続は途中で切れることもあり、HTTPは同じ接続の中でも前のリクエストを覚えていません。
  • B. HTTP自体はログインの状態を記録しないので、Cookieやトークンを使ってアプリケーションの側で管理します。
  • C. 正しい。セッションIDをCookieで受け渡して、リクエストを利用者に結び付けます。
この分野を解く 分野ページへ

Web技術の基礎の参考書を探す PR

Amazonの検索結果へのリンクです。Amazonのアソシエイトとして、半導体教室は適格販売により収入を得ています。

Web技術の基礎のほかの問題

  1. 上のヘッダで設定されたCookieについての説明として、正しいものはどれか。
  2. ブラウザのlocalStorageとCookieの違いとして、正しいものはどれか。
  3. ロードバランサの後ろに3台のアプリケーションサーバを置き、リクエストを順番に各サーバへ振り分けている(ラウンドロビン)。ログインした利用者のセッションの情報は、ログインを処理したサーバのメモリだけに保存している。起こりやすい問題と対策の組み合わせとして、適切なものはどれか。
  4. 署名を付けた一般的なJWT(JSON Web Token)の説明として、正しいものはどれか。
  5. 写真の印刷サービスのアプリが、利用者の許可を得て、別の会社の写真の保存サービスにある利用者の写真を読み出す。OAuth 2.0で、利用者に許可を求める画面を示し、利用者が許可するとアプリにアクセストークンを発行する役割はどれか。