【ASP.NET】セッションとクッキーの比較
今回の試験メンテナンスでは、古い知識をたくさん勉強し、新しい知識もたくさん勉強しました.このブログで皆さんと共有したいのは、セッションとクッキーのつながりと違いです.
【事業概要】
開発では、このような変数が必要になるのは避けられません.この段階ではそれはありませんが、前の段階や他の方法では、その値を簡単に取得できるように保存する必要があります.C/S開発の下で、グローバル変数を定義することができます.では、B/S開発の下で、私たちが使うのはsessionやcookieです.
【事業背景】
今回のアンケートシステムの開発では、専門、カリキュラム、ログインユーザーなど、いくつかの変数がいつでも必要です.そこで、大陸は私にそれらをsessionに保存させました.システムにはsessionがユーザーのログイン情報を保存するのに役立つからです.プロフェッショナル、カリキュラムでは、いつでもどこでも値を得ることができます.
【項目質問】
以前、私はずっと専門と課程のこのような額の変数をsessionの中に保存していましたが、システムが完成しそうになった夜、私の頭の中にcookieの概念が現れて、私はこれらの変数をcookieの中に置いてもいいですか?もしよろしければ、クッキーに置くのとセッションに置くのとでは、どちらが違うのでしょうか.そこで、私は質問の答えを探し始めました.
【プロジェクト開発】
(1)まず、Sessionを使用して変数を格納するコードを見てみましょう.
他の方法でもこの2つの値を使用する必要がある場合は、Sessionから直接取得します.
(2)次は私がCookieを利用してカリキュラムと専門情報を格納するコードです.
他の方法でもこの2つの値を使用する必要がある場合は、Cookieから直接取得すればいいです.
【プロジェクトの質疑応答】
事実は、sessionでもクッキーでも変数値を格納しても、他の場所で取得できることを証明しています.では、セッションとクッキーの違いはありますか?これから一緒に勉強します.
(1)クッキーとセッションのメカニズム:
Httpプロトコルは無状態のプロトコルであるため,サービス側がユーザの状態を記録する必要がある場合,特定のユーザを何らかのメカニズムで認識する必要があり,このメカニズムがsessionである.
ショッピングカートのような典型的なシーンでは、注文ボタンをクリックすると、Httpプロトコルはステータスがないため、どのユーザーが操作しているのか分からないため、サービス側は特定のユーザーのために特定のセッションを作成し、ユーザーを識別し、追跡するために、ショッピングカートの情報を知ることができます.このセッションはサービス側に保存されています.
しかし、サービス側はどのように特定の顧客を識別しますか?この時クッキーが登場しました.HTTPリクエストのたびに,描画セグメントは応答するクッキー情報をサービス側に送信する.実際、ほとんどのアプリケーションはクッキーでsession追跡を実現しています.
クライアントのブラウザがクッキーを無効にしたらどうしますか?一般に、この場合、Httpインタラクションのたびにsid=***のようなパラメータがURL書き換えという技術が使用され、サービス側はこれに基づいてユーザを識別する.
普段、私达は自分のコンピュータの上でいくつかの経常的で、固定的なウェブサイトを登录して、すべて相応のアカウントとパスワードを保存して、次回は自动的に登录することができます.この情報は実はクッキーに保存されており、ユーザーに大きな便利さを与えています.これもクッキー名の由来で、ユーザーに少し甘い頭を与えます.
(2)クッキーとセッションの違い:
i)クッキーデータはクライアントのブラウザに格納され、セッションデータはサーバに格納される.
ii)クッキーは安全ではなく、他の人は現地に保管されているクッキーを分析し、クッキー詐欺を行うことができる.
iii)セッションは一定時間サーバに保存される.アクセスが増えると、サーバのパフォーマンスが比較的消費されます.
iiii)単一クッキーで保存されているデータは4 kを超えてはいけません.多くのブラウザでは、1つのサイトに最大20個のクッキーを保存することを制限しています.
したがって,多くの場合,ログインなどの重要な情報をセッションに格納し,他の情報を保存する必要がある場合はクッキーに格納することができる.
【項目まとめ】
実は、その前に、他のプロジェクトでもsessionやcookieを使ってデータを保存していましたが、自分も多くのブログを見たことがあります.両者の比較を書いています.
しかし、
自分では体験していないので、応用して、比較して、だから、ただ印象を残しました.
それだけに、このプロジェクトでは、自分の何度も使って、条件反射のように、自然とセッションをクッキーに変えてみて、自分の実践を通じて、自分の疑問を解いて、両者のつながりと違いをもっと理解しました.
だから、ふだんの耳は染めて、ふだんの潜移は黙化して、ふだんの潤物は音がなくて、結局繭を破って蝶になる時があります.
【事業概要】
開発では、このような変数が必要になるのは避けられません.この段階ではそれはありませんが、前の段階や他の方法では、その値を簡単に取得できるように保存する必要があります.C/S開発の下で、グローバル変数を定義することができます.では、B/S開発の下で、私たちが使うのはsessionやcookieです.
【事業背景】
今回のアンケートシステムの開発では、専門、カリキュラム、ログインユーザーなど、いくつかの変数がいつでも必要です.そこで、大陸は私にそれらをsessionに保存させました.システムにはsessionがユーザーのログイン情報を保存するのに役立つからです.プロフェッショナル、カリキュラムでは、いつでもどこでも値を得ることができます.
【項目質問】
以前、私はずっと専門と課程のこのような額の変数をsessionの中に保存していましたが、システムが完成しそうになった夜、私の頭の中にcookieの概念が現れて、私はこれらの変数をcookieの中に置いてもいいですか?もしよろしければ、クッキーに置くのとセッションに置くのとでは、どちらが違うのでしょうか.そこで、私は質問の答えを探し始めました.
【プロジェクト開発】
(1)まず、Sessionを使用して変数を格納するコードを見てみましょう.
/// <summary>
/// , Session —— ——2016 1 8 16:23:27
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void dropCollege_SelectedIndexChanged(object sender, EventArgs e)
{
//
string departmentName = dropCollege.SelectedValue.ToString().Trim();
// Session
Session["departmentName"] = departmentName;
}
他の方法でもこの2つの値を使用する必要がある場合は、Sessionから直接取得します.
/// <summary>
/// Excel—— ——2016 1 8 16:24:48
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void lbnExportExcel_Click(object sender, EventArgs e)
{
//
string departmentName = dropCollege.SelectedValue.ToString().Trim();
//
string courseName = dropCourse.SelectedValue.ToString().Trim();
//
if (departmentName == "" || courseName == "")
{
return;
}
///
CheckAnswerEntity checkanswerentity = new CheckAnswerEntity();
/// Session
checkanswerentity.CourseName = Session["courseName"].ToString().Trim();
/// Session
checkanswerentity.MajorName = Session["departmentName"].ToString().Trim();
}
(2)次は私がCookieを利用してカリキュラムと専門情報を格納するコードです.
/// <summary>
/// , Session —— ——2016 1 8 16:28:04
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void dropCollege_SelectedIndexChanged(object sender, EventArgs e)
{
//
string majorName = dropCollege.SelectedValue.ToString().Trim();
// Cookie , cookie
HttpCookie majorNameCookie = new HttpCookie("majorName");
// cookie
majorNameCookie.Value = majorName;
// cookie Cookies
Response.Cookies.Add(majorNameCookie);
}
他の方法でもこの2つの値を使用する必要がある場合は、Cookieから直接取得すればいいです.
/// <summary>
/// Excel—— ——2016 1 8 16:29:27
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void lbnExportExcel_Click(object sender, EventArgs e)
{
//
string departmentName = dropCollege.SelectedValue.ToString().Trim();
//
string courseName = dropCourse.SelectedValue.ToString().Trim();
//
if (departmentName == "" || courseName == "")
{
return;
}
//
SingleAnswerEntity singleanswerentity = new SingleAnswerEntity();
// Cookie
singleanswerentity.CourseName = Request.Cookies["courseName"].Value;
// Cookie
singleanswerentity.MajorName = Request.Cookies["majorName"].Value;
}
【プロジェクトの質疑応答】
事実は、sessionでもクッキーでも変数値を格納しても、他の場所で取得できることを証明しています.では、セッションとクッキーの違いはありますか?これから一緒に勉強します.
(1)クッキーとセッションのメカニズム:
Httpプロトコルは無状態のプロトコルであるため,サービス側がユーザの状態を記録する必要がある場合,特定のユーザを何らかのメカニズムで認識する必要があり,このメカニズムがsessionである.
ショッピングカートのような典型的なシーンでは、注文ボタンをクリックすると、Httpプロトコルはステータスがないため、どのユーザーが操作しているのか分からないため、サービス側は特定のユーザーのために特定のセッションを作成し、ユーザーを識別し、追跡するために、ショッピングカートの情報を知ることができます.このセッションはサービス側に保存されています.
しかし、サービス側はどのように特定の顧客を識別しますか?この時クッキーが登場しました.HTTPリクエストのたびに,描画セグメントは応答するクッキー情報をサービス側に送信する.実際、ほとんどのアプリケーションはクッキーでsession追跡を実現しています.
クライアントのブラウザがクッキーを無効にしたらどうしますか?一般に、この場合、Httpインタラクションのたびにsid=***のようなパラメータがURL書き換えという技術が使用され、サービス側はこれに基づいてユーザを識別する.
普段、私达は自分のコンピュータの上でいくつかの経常的で、固定的なウェブサイトを登录して、すべて相応のアカウントとパスワードを保存して、次回は自动的に登录することができます.この情報は実はクッキーに保存されており、ユーザーに大きな便利さを与えています.これもクッキー名の由来で、ユーザーに少し甘い頭を与えます.
(2)クッキーとセッションの違い:
i)クッキーデータはクライアントのブラウザに格納され、セッションデータはサーバに格納される.
ii)クッキーは安全ではなく、他の人は現地に保管されているクッキーを分析し、クッキー詐欺を行うことができる.
iii)セッションは一定時間サーバに保存される.アクセスが増えると、サーバのパフォーマンスが比較的消費されます.
iiii)単一クッキーで保存されているデータは4 kを超えてはいけません.多くのブラウザでは、1つのサイトに最大20個のクッキーを保存することを制限しています.
したがって,多くの場合,ログインなどの重要な情報をセッションに格納し,他の情報を保存する必要がある場合はクッキーに格納することができる.
【項目まとめ】
実は、その前に、他のプロジェクトでもsessionやcookieを使ってデータを保存していましたが、自分も多くのブログを見たことがあります.両者の比較を書いています.
しかし、
自分では体験していないので、応用して、比較して、だから、ただ印象を残しました.
それだけに、このプロジェクトでは、自分の何度も使って、条件反射のように、自然とセッションをクッキーに変えてみて、自分の実践を通じて、自分の疑問を解いて、両者のつながりと違いをもっと理解しました.
だから、ふだんの耳は染めて、ふだんの潜移は黙化して、ふだんの潤物は音がなくて、結局繭を破って蝶になる時があります.