クッキー、セッションはばかげて不明瞭ですか?
何年にもわたるテストを行った後でも、Cookieとセッションとは何なのかわかりません。ごく普通のことですが、多くのジュニア開発エンジニアはセッションが何であるかを理解できない場合があり、Cookieは比較的単純です。
次の記事は、これら2つのテクノロジーの違いと対応する使用シナリオを明確に区別するのに役立つことを期待しています。
A).cookieの機能:
- Cookieはクライアント側のキャッシングテクノロジーです
- Cookieデータはサーバーによって生成され、保存するためにブラウザーに送信されます
- Cookieデータ形式:キーと値のペア
- Cookieデータの有効期限メカニズム:有効期限の値を設定します
Cookieはクライアントテクノロジーであり、通常はサーバーによって生成され、ブラウザクライアントに返されて保存され、Cookieはキーと値のペアの形式でブラウザクライアントに保存されます。各Cookieには、名前、値、および有効期限があります。 .... Cookieには多くの使用例があり、プロジェクトでより一般的なものは次のとおりです。
1.ログインしてユーザー名を記憶する
2.ユーザーの閲覧履歴を記録する
...
上記のアプリケーションで最も馴染みのあることは、ユーザー名を覚えることです。JingdongWebサイトのログイン機能を例にとると、Jingdongに一度ログインしてから、後でログインページにログインすると、入力する前に役立つことがわかります。ユーザー名、このシナリオはCookieテクノロジーによって実現されます。
1. Firefoxブラウザーを開き、Jingdongのログインページにアクセスし、ログインアカウントとパスワードを入力してログインを完了します。
2.ホームページからログアウトします。
3.ログインページに再度ログインし、ユーザー名入力ボックスに以前の携帯電話番号が埋め戻されていることを確認します。
4. F12 Firefoxブラウザーを開き、携帯電話番号「mp」を保存するCookieを見つけます。値は、入力したユーザー名情報です。
概要:この実装プロセス:ログインが成功し、携帯電話番号をCookieに書き込みます--->ログインページに戻って再度ログインし、mp Cookieの名前に従って携帯電話番号の値を取得し、ユーザー名入力ボックスに入力し直します(キーに従って値を取得します) )
拡張:Cookieには有効期限メカニズムがあり、Cookieの有効期限を設定することで、Cookieの有効期限を制御できます。
このmpの有効期限は1か月です。この月内にブラウザー側でCookieデータを消去しない限り、Firefoxブラウザーを使用してJingdongのログインページにアクセスすると、携帯電話番号のバックフィルの効果を確認できます。
================================================== ============分割線==================================== ==========================================
二).session
セッションの特徴:
- セッションはサーバー側のセッションキャッシングテクノロジーです。
- セッションは、サーバー側のWebコンテナによって作成され、サーバー側に保存されます。
- セッション保存データ:キーと値のペアのフォーム
- セッションの有効期限:デフォルトで30分
セッションはサーバー側のセッションテクノロジーです。ユーザーがシステムにログインすると、サーバー側のWebコンテナーがセッションを作成します。このセッションでは、ログインしたユーザーに関する情報を保存でき、キーと値のペアの形式で保存されます。これは、セッション技術を使用して認証(承認)を行います。つまり、ユーザーは、ログインして初めてシステム内の一部のページとデータにアクセスできます。
例として次のシステムを取り上げます。
システムlmcanonのホームページindex.htmlへの直接アクセスは正常にアクセスできません。このシステムはユーザー認証を行うため、ログインページlogin.htmlにリダイレクトされ、ログインしていないユーザーはシステム内のデータにアクセスできません。
次のように:
2.システムにログインします。
F12を開くと、ログインログインインターフェイスの応答ヘッダーに「set-cookie」ヘッダーがあり、メッセージ「JSESSIONID = 8AC39619BB5BEC4426CF999A92E74337」が含まれていることがわかります。 Cookieのうち、Cookie名は「JSESSIONID」、値は「8AC39619BB5BEC4426CF999A92E74337」です。セッション番号はサーバーから返されます。サーバー側のこのセッションは、ログインしたユーザーの情報を保存します。
Cookieとしてキャッシュされた後、以下に示すように、ブラウザのCookieでこのデータを確認できます。
ログイン後、システム内のどのページにもアクセスしても問題はありません。後続のすべてのリクエストで、ブラウザーのCookieに「JSESSIONID」の値が表示されるため、下の図に示すように、「週間スケジュール」のメニューにアクセスします。次のリクエストに示すように、このページとそのページのインターフェースリクエストをリクエストすると、セッションID " 8AC39619BB5BEC4426CF999A92E74337"がリクエストヘッダーに含まれてサーバーに送信されます。
サーバーがこのリクエストを受信すると、「Cookie」リクエストヘッダーのセッションIDがサーバーと一致し、同じセッションセッションであると判断します。このセッションにはログインユーザーの情報が含まれているため、ログインユーザーがリクエストを発行したと判断し、リクエストを許可します。
上記のプロセスは、次の図で表すことができます。
拡張機能1:セッション有効期限処理。
サーバー側のセッションが期限切れになると、リクエストを開始し続けると、クライアントから取得したセッション番号が前のセッションと同じであるため、検証に失敗し、セッションが期限切れになると再度ログインするように求められます。
拡張機能2:トークンメカニズム
アプリプロジェクトの例:
一般的なアプリプロジェクトは、トークンに基づいて認証されます。
現時点ではクライアントはブラウザではないため、Cookieなどは存在しません。
ユーザーがアプリにログインすると、サーバーはトークンメッセージで応答します(通常、uuidなどの一意の識別子の文字列が返されます)。
サーバーは、ログインしたユーザーとトークンの間のマッピング関係を保存します。これは通常、redisまたはテーブルに保存されます。サーバーから返されたトークン
は、携帯電話のローカルキャッシュにキャッシュされ、携帯電話はアプリの他のページにアクセスします確認のためにこのトークンをサーバーに持っていきます。このトークンを介してredisからログインユーザー情報を見つけることができる場合、ユーザーはログインユーザー
と見なされます。
トークンの無効化:しばらく
すると、サーバー側のトークンが無効になり、このトークンとユーザー間のマッピング関係がredisから削除されます。その後、戻ってきたときに、モバイルリクエストによってもたらされたトークンが
ログインと一致しませんユーザー、サーバーはクライアントに、再度ログインする必要があることを伝えます。
クッキー、セッション、トークンの共有についてはこちらをご覧ください。これらが皆さんのお役に立てば幸いです。不適切な場所があります。メッセージ領域で私を修正してください。気分が良い、それを好きになることを忘れないでください。
送信元:https://blog.csdn.net/qq_33616529/article/details/78288883
何年にもわたるテストを行った後でも、Cookieとセッションとは何なのかわかりません。ごく普通のことですが、多くのジュニア開発エンジニアはセッションが何であるかを理解できない場合があり、Cookieは比較的単純です。
次の記事は、これら2つのテクノロジーの違いと対応する使用シナリオを明確に区別するのに役立つことを期待しています。
A).cookieの機能:
- Cookieはクライアント側のキャッシングテクノロジーです
- Cookieデータはサーバーによって生成され、保存するためにブラウザーに送信されます
- Cookieデータ形式:キーと値のペア
- Cookieデータの有効期限メカニズム:有効期限の値を設定します
Cookieはクライアントテクノロジーであり、通常はサーバーによって生成され、ブラウザクライアントに返されて保存され、Cookieはキーと値のペアの形式でブラウザクライアントに保存されます。各Cookieには、名前、値、および有効期限があります。 .... Cookieには多くの使用例があり、プロジェクトでより一般的なものは次のとおりです。
1.ログインしてユーザー名を記憶する
2.ユーザーの閲覧履歴を記録する
...
上記のアプリケーションで最も馴染みのあることは、ユーザー名を覚えることです。JingdongWebサイトのログイン機能を例にとると、Jingdongに一度ログインしてから、後でログインページにログインすると、入力する前に役立つことがわかります。ユーザー名、このシナリオはCookieテクノロジーによって実現されます。
1. Firefoxブラウザーを開き、Jingdongのログインページにアクセスし、ログインアカウントとパスワードを入力してログインを完了します。
2.ホームページからログアウトします。
3.ログインページに再度ログインし、ユーザー名入力ボックスに以前の携帯電話番号が埋め戻されていることを確認します。
4. F12 Firefoxブラウザーを開き、携帯電話番号「mp」を保存するCookieを見つけます。値は、入力したユーザー名情報です。
概要:この実装プロセス:ログインが成功し、携帯電話番号をCookieに書き込みます--->ログインページに戻って再度ログインし、mp Cookieの名前に従って携帯電話番号の値を取得し、ユーザー名入力ボックスに入力し直します(キーに従って値を取得します) )
拡張:Cookieには有効期限メカニズムがあり、Cookieの有効期限を設定することで、Cookieの有効期限を制御できます。
このmpの有効期限は1か月です。この月内にブラウザー側でCookieデータを消去しない限り、Firefoxブラウザーを使用してJingdongのログインページにアクセスすると、携帯電話番号のバックフィルの効果を確認できます。
================================================== ============分割線==================================== ==========================================
二).session
セッションの特徴:
- セッションはサーバー側のセッションキャッシングテクノロジーです。
- セッションは、サーバー側のWebコンテナによって作成され、サーバー側に保存されます。
- セッション保存データ:キーと値のペアのフォーム
- セッションの有効期限:デフォルトで30分
セッションはサーバー側のセッションテクノロジーです。ユーザーがシステムにログインすると、サーバー側のWebコンテナーがセッションを作成します。このセッションでは、ログインしたユーザーに関する情報を保存でき、キーと値のペアの形式で保存されます。これは、セッション技術を使用して認証(承認)を行います。つまり、ユーザーは、ログインして初めてシステム内の一部のページとデータにアクセスできます。
例として次のシステムを取り上げます。
システムlmcanonのホームページindex.htmlへの直接アクセスは正常にアクセスできません。このシステムはユーザー認証を行うため、ログインページlogin.htmlにリダイレクトされ、ログインしていないユーザーはシステム内のデータにアクセスできません。
次のように:
2.システムにログインします。
F12を開くと、ログインログインインターフェイスの応答ヘッダーに「set-cookie」ヘッダーがあり、メッセージ「JSESSIONID = 8AC39619BB5BEC4426CF999A92E74337」が含まれていることがわかります。 Cookieのうち、Cookie名は「JSESSIONID」、値は「8AC39619BB5BEC4426CF999A92E74337」です。セッション番号はサーバーから返されます。サーバー側のこのセッションは、ログインしたユーザーの情報を保存します。
Cookieとしてキャッシュされた後、以下に示すように、ブラウザのCookieでこのデータを確認できます。
ログイン後、システム内のどのページにもアクセスしても問題はありません。後続のすべてのリクエストで、ブラウザーのCookieに「JSESSIONID」の値が表示されるため、下の図に示すように、「週間スケジュール」のメニューにアクセスします。次のリクエストに示すように、このページとそのページのインターフェースリクエストをリクエストすると、セッションID " 8AC39619BB5BEC4426CF999A92E74337"がリクエストヘッダーに含まれてサーバーに送信されます。
サーバーがこのリクエストを受信すると、「Cookie」リクエストヘッダーのセッションIDがサーバーと一致し、同じセッションセッションであると判断します。このセッションにはログインユーザーの情報が含まれているため、ログインユーザーがリクエストを発行したと判断し、リクエストを許可します。
上記のプロセスは、次の図で表すことができます。
拡張機能1:セッション有効期限処理。
サーバー側のセッションが期限切れになると、リクエストを開始し続けると、クライアントから取得したセッション番号が前のセッションと同じであるため、検証に失敗し、セッションが期限切れになると再度ログインするように求められます。
拡張機能2:トークンメカニズム
アプリプロジェクトの例:
一般的なアプリプロジェクトは、トークンに基づいて認証されます。
現時点ではクライアントはブラウザではないため、Cookieなどは存在しません。
ユーザーがアプリにログインすると、サーバーはトークンメッセージで応答します(通常、uuidなどの一意の識別子の文字列が返されます)。
サーバーは、ログインしたユーザーとトークンの間のマッピング関係を保存します。これは通常、redisまたはテーブルに保存されます。サーバーから返されたトークン
は、携帯電話のローカルキャッシュにキャッシュされ、携帯電話はアプリの他のページにアクセスします確認のためにこのトークンをサーバーに持っていきます。このトークンを介してredisからログインユーザー情報を見つけることができる場合、ユーザーはログインユーザー
と見なされます。
トークンの無効化:しばらく
すると、サーバー側のトークンが無効になり、このトークンとユーザー間のマッピング関係がredisから削除されます。その後、戻ってきたときに、モバイルリクエストによってもたらされたトークンが
ログインと一致しませんユーザー、サーバーはクライアントに、再度ログインする必要があることを伝えます。
クッキー、セッション、トークンの共有についてはこちらをご覧ください。これらが皆さんのお役に立てば幸いです。不適切な場所があります。メッセージ領域で私を修正してください。気分が良い、それを好きになることを忘れないでください。
送信元:https://blog.csdn.net/qq_33616529/article/details/78288883