0.はじめに、なぜクッキーとセッションが必要なのか
HTTPリクエストはStateless(ユーザーのログインステータスを記録できないなど)であるため、ユーザーのログインステータスやその他の情報を保存するために特定のメカニズムが必要です。次にWebサービスにアクセスするときは、ログインするかその他のステータスを再度ログインするかを確認する必要はありません。セッションメカニズムとCookieメカニズムは、それぞれサーバーとブラウザ側のソリューションです。
1。クッキーについて
1.1クッキーとは何ですか
クッキー、オリジナルの意味クッキー。ブラウザ側にユーザーステータス情報を保存し、バックエンドにアクセスするときに情報のこの部分をバックエンドに戻すために使用されます。
Cookieの内容には主に含まれています:名前、値、有効期限、パス、ドメイン
1.2 Cookieのカテゴリ
有効期限を設定しないセッションクッキーは、ブラウザのメモリに保存されます。ブラウザが閉じている場合、Cookieは破壊されます。 (セッションとしてよく使用されます)
通常のクッキーは有効期限を設定し、ハードドライブに保存します
1.3適用方法
リクエストを開始するとき:ブラウザはすべての保存されたCookieをチェックします。 Cookie(パスとドメインによって決定)によって宣言されたアクション範囲が、リクエストされるリソースの場所よりも大きい場合、CookieはリクエストリソースのHTTPリクエストヘッダーに添付され、サーバーに送信されます。
リクエストの処理の場合:サーバー側では、リクエストヘッダーに含まれるCookie情報が一般的にチェックされます(ログインチェックなど)。チェックが渡された場合、実際のビジネス処理を実行できます。
CookieやCookie情報が不正確である(偽造)が正しくないなどの検証が失敗し、ログインしてログインした後、応答のCookie情報を返します。ブラウザは、次の使用のために返されたCookie情報に基づいて、ハードディスクまたはメモリに保存します。 、
2。セッションについて
2.1セッションとは何ですか
セッションは、サーバー側のユーザーステータス情報を保存するために使用されます。
2.2使い方
ブラウザがリクエストを開始すると、サーバーは最初にリクエストヘッダーのセッション情報を読み取ります。セッション情報が見つからない場合、またはセッションIDをローカルで取得できない場合、そうでない場合は、新しいセッションIDが生成され、サーバーハードディスクまたはMemcacheに保存されます。
ブラウザは応答を受信します。返されたsessionIDは、次のリクエストで使用するためにローカルメモリに保存されます。地元で保存されたセッションの実装の1つは、Cookieに関する情報を保存することですが、実際、Cookieはセッションを保存する唯一のソリューションではありません。また、URL書き換えを使用することもできます(URLパスのすぐ後ろにセッションIDを追加します)。
3. Cookieとセッションの主な違い
1.ストレージの場所にわずかな違いがあります
Cookieデータはクライアントのブラウザに保存されており、サーバー側に保存する必要はありません。セッションデータはサーバーに配置され、ローカルメモリのコピーもあります。
2。異なる安全性
Cookieはセッションほど安全ではありません。通常のCookieはローカルハードディスクに保存されるため、ハッカーはURLやその他の手段を作成して、ローカルハードディスク保存状態でCookieを取得し、ユーザーの機密情報を盗むことでXS攻撃を開始できます。
セッションは異なります。ユーザーがこのWebサイトにログインしたときにXSS攻撃が起動された場合にのみ、セッション情報を取得できます。ブラウザを閉じた後、セッションは破壊されます。セキュリティはCookieよりも優れています。
3。クロスドメインサポートの違い
Cookieはクロスドメインアクセスをサポートします。たとえば、ドメイン属性が「.biaodianfu.com」に設定されている場合、接尾辞を備えたすべてのドメイン名「.biaodianfu.com」は「Cookieにアクセスできます。現在、クロスドメインCookieは、Google、Baidu、Sinaなどなど、インターネットで広く使用されています。セッションは、クロスドメインアクセスをサポートしていません。セッションは、彼がいるドメイン名内でのみ有効です。
4.サーバー圧力の違い
セッションはサーバー側に保存され、各ユーザーがセッションを生成します。同時にアクセスするユーザーが多い場合、多くのセッションを生成し、多くのメモリを消費します。したがって、Google、Baidu、SinaなどのWebサイトが非常に高い訪問を行うことは、セッションを使用して追跡できる可能性は低いです。サーバーのパフォーマンスの低下を考慮すると、Cookieを使用する必要があります。
5。異なるアクセス方法
ASCII文字列はCookieにのみ保存できます。 Unicode文字またはバイナリデータが必要な場合は、最初にエンコードが必要です。 Javaオブジェクトには、Cookieで直接アクセスできません。わずかに複雑な情報を保存するには、Cookieを使用することは非常に困難です。
セッションでは、文字列、整数、リスト、マップなどを含むがこれらに限定されないあらゆる種類のデータにアクセスできます。セッションでは、Java Beans、さらにはJavaクラス、オブジェクトなども直接保存できます。セッションはJavaコンテナクラスと考えることができます。
6. Cookieのサイズは限られています
単一のCookieによって保存されたデータは4Kを超えることはできません。多くのブラウザは、サイトを最大20個のCookieを節約するために制限しています。
セッションとCookieの上記の簡単な理解は、私があなたと共有するすべてのコンテンツです。参照を提供できることを願っています。wulin.comをもっとサポートできることを願っています。