web-dev-qa-db-ja.com

Cookieとセッションの違いは?

私はWeb開発のトレーニングを受けており、JSPServletsについて学んでいます。 HttpSessionの知識があります-サンプルプロジェクトのいくつかで使用しました。

ブラウザで、「Cookieを削除する」オプションを見てきました。 Cookieを削除すると、HttpSessionも削除されます。

Cookieとセッションは同じですか?それらの違いは何ですか?

148
blacktiger

セッションはユーザー情報を含むサーバー側ファイルであり、Cookieはユーザー情報を含むクライアント側ファイルです。セッションには、特定のユーザーにマップする一意の識別子があります。この識別子は、URLで渡すか、セッションCookieに保存できます。

最近のほとんどのサイトでは、2番目の方法を使用して、URLに渡すのではなくCookieに識別子を保存します(セキュリティリスクが生じます)。おそらく、これを知らずにこのアプローチを使用しており、Cookieを削除すると、Cookieに含まれる一意のセッション識別子を削除するときに、一致するセッションが事実上消去されます。

177
Eran Galperin

Cookieは、クライアントとサーバー間で送受信される短いテキスト文字列です。 name=bob; password=asdfasをCookieに保存し、それを前後に送信してサーバー側のクライアントを識別できます。これは、短期間の記憶がなく、取引ごとに身元を明らかにする必要がある銀行窓口とのやり取りを行うと考えることができます。もちろん、この種の情報を保存するためにクッキーを使用することは、恐ろしく安全ではありません。クッキーのサイズにも制限があります。

今、銀行の出納係が彼/彼女の記憶の問題について知っているとき、彼/彼女はあなたの情報を紙に書き留め、あなたに短いID番号を割り当てることができます。次に、取引ごとにアカウント番号と運転免許証を提供する代わりに、「I'm client 12」と言うことができます。

それをWebサーバーに変換する:サーバーはセッションオブジェクトに関連情報を保存し、Cookieでクライアントに送り返すセッションIDを作成します。クライアントがCookieを送り返すと、サーバーはIDを使用してセッションオブジェクトを簡単に検索できます。したがって、Cookieを削除すると、セッションは失われます。

もう1つの方法は、サーバーがURL書き換えを使用してセッションIDを交換することです。

リンクがあると仮定します-www.myserver.com/myApp.jspページを通過し、すべてのURLをwww.myserver.com/myApp.jsp?sessionID=asdfまたはwww.myserver.com/asdf/myApp.jspに書き換えて、そのように識別子を交換できます。この手法は、Webアプリケーションコンテナーによって処理され、通常、Cookieなしセッションを使用するように構成を設定することで有効になります。

300
Chris Cudmore

Cookieとセッションはどちらも(HTTP要求をステートフルにするために)ユーザーに関する情報を保存しますが、Cookieはクライアント側(ブラウザー)に情報を保存し、セッションはサーバー側に情報を保存します。 Cookieは、制限されたユーザーに関する情報を保存し、各ユーザーの制限されたコンテンツのみを保存するという意味で制限されています。セッションはそのような方法で制限されません。

4
sanjay singh

Cookieは基本的に、Webブラウザ間でアクセスされるグローバルな配列です。値の送受信に何度も使用されます。フォーム間の値にアクセスするためのストレージメカニズムとして機能します。 Cookieは、セッションと比較して使用に制約を追加するブラウザによって無効にできます。

セッションは、ログインとログアウトの間の何かとして定義できます。ユーザーがログインしてからログアウトするまでの時間はセッションです。セッションは、セッション時間の間のみ、つまりログアウトする前に値を保存します。ユーザーがログオンすると、セッションはユーザーのアクティビティを追跡するために使用されます。

1
RishikeshD

このスレッドにはすでに多くの貢献がありますが、シーケンス図を要約して別の方法で説明してください。

enter image description here

また、このトピックに関する良いリンクです https://web.stanford.edu/~ouster/cgi-bin/cs142-fall10/lecture.php?topic=cookie

0
Gearon

Google JSESSIONID。これは、サーブレットAPIが最初にURL書き換えを使用し、Cookieが有効になっている場合にセッションを管理するためにCookieを使用する方法を説明します。

HTTPはステートレスであるため、クライアントブラウザーは、リクエストごとにセッションのIDをサーバーに送信する必要があります。サーバーは、なんらかの方法でこのIDを使用して、そのセッションのデータを取得し、リクエストの存続期間中利用可能にします。

0
Nick Holt

Cookieは、クライアントとサーバー間のセッションを実装する方法です。このようにして、セッション情報はCookieに保存されます。しかし、これはセッション情報を保持する唯一の方法ではなく、別の方法はセッション情報をUrlに保存することです。

0
lessisawesome

Cookiesはブラウザにテキストファイル形式で保存されます。制限された量のデータが保存されます。のみが許可されます4kb [4096bytes]。$ _ COOKIE変数は同じ名前の複数のCookieを保持しません

cookieの値に簡単にアクセスできるため、あまり安全ではありませんsetcookie()関数は、

<html> 

鬼ごっこ。

セッションはサーバー側に保存されます。無制限の量のデータが保存されます。セッションで複数の変数を保持しています。 Cookieの値に簡単にアクセスできないため、より安全です

リンク:difference-between-cookies-and-sessions

0
Elangovan

Asp.netのセッション:

1.アプリケーション全体でデータを維持します。

2.現在のセッションが生きている場合、データを保持します。複数のコントローラーのアクティトンおよびビューからアクセス可能なデータが必要な場合、セッションはデータを保存および取得する方法です。

3.セッションは、ユーザー情報を含むサーバー側のファイルです。 [セッションは特定のユーザーにマップする一意の識別子です]

これをWebサーバーに変換する:サーバーはセッションオブジェクトに関連情報を保存し、Cookieでクライアントに送り返すセッションIDを作成します。クライアントがCookieを送り返すと、サーバーはIDを使用してセッションオブジェクトを簡単に検索できます。したがって、Cookieを削除すると、セッションは失われます。

0
Vicky