質問: 上記前提で作成したRailsアプリケーションのトップページにアクセスしてみました。 トップページにアクセスしただけなのですが _サイト名_session_A= A ブラウザのクッキーに上記のセッションIDと値が入っていることが確認できました。 これは一体どんな役割があるセッションなのでしょうか?? このrailsアプリケーションは自作したものなので中身は知っているのですが * 上記のような名前でセッションIDをクッキーに使った覚えはありませんでした * トップページを見ただけでクッキーを使う仕様でありません。(grepでも確認してみました)おそらくサーバー(Rails)が割り当てているものなのかな?と思っています * このrailsアプリケーションではログイン状態を管理するのに_サイト名_session_B= Bでクッキーを使っています。なので上記はログイン関係ではありません。 twitterなどでもトップページにアクセスするとこのようなセッションがわりあてられていました。
回答: > > これはログイン状態を管理しているものではなくて、別の意味があるのでしょうか? > > > ウェブの基礎となるHTTPは「状態」を保持する機能がありません。なので、ページをまたがって情報を「覚えておく」ことができません。 しかし、アプリケーションを書くためには、ページをまたがって情報を覚えておきたいニーズがあります。ログインの状態もその一つですが、他にも、ECサイトのショッピングカートの情報も該当します。 そのようなさまざまなニーズに対応するために、クッキーというものが考案され、そのクッキーの応用としてセッションという機能が作られました。 なので、ログイン状態の管理のためだけにセッションがあるわけではありません。ログイン状態の管理はセッションを使う応用の一つに過ぎません。セッションは、他の目的でも使うことができます。 (追記) > > このトップページにアクセスしただけでクッキーに保存される_サイト名_session_A= Aとは一体どんな役割があるのでしょうか? > > > Railsの場合、セッション管理の方式が複数用意されていますが、デフォルトではCookieStoreというものが使われます。これは、セッションの中身を暗号化してクッキー自体に保存する方式です。 この場合、クッキーはセッション情報を格納する「容器」としての働きです。セッションを有効化すると、セッションに何も保存していなくても、「空の容器」が作られるわけです。 「空の容器」があることで、セッション自体は有効であること、その中には何も入っていないことがわかります。 (追記) > > 容器には_サイト名_session_Aの値が入っているようにみえます。 > > トップページにアクセスするだけでクッキーに保存される > > _サイト名_session_A > > とは一体何なのでしょうか?? > > > クッキーは、名前=値 を形式になっています。これが複数でもいいわけです。言い換えれば、複数のクッキーが保存できるからこそ、名前がついてないと区別できないわけですね。 で、セッションを識別するクッキーにも名前がついています。PHP等ですと、PHPSESSIDという名前がデフォルトですが、変更もできます。今動かしているアプリの場合は、_サイト名_session_A という名前をつけているということです。これは単に「識別のための名前」です。 値の方は、L202aFhZS09FK1JGKzEyVE9JMFhFUEV4..............ですが、これは暗号化されています。利用者本人といえども、セッションの内容を書き換えられると、他人になりすましができたりするからです。「空の容器」といっても、0バイトという意味ではなく、容器そのものがあったり、場合によってはタイムスタンプのようなものがあったりしますので、何かしらデータはあり、それを暗号化しているものを見ていることになります。