【抜粋】asp.net Cookie操作

21769 ワード

Cookieは、Webアプリケーションにユーザ固有の情報を格納する方法を提供する.たとえば、ユーザーがサイトにアクセスすると、Cookieを使用してユーザープリファレンスまたはその他の情報を格納できます.ユーザーがWebサイトに再アクセスすると、アプリケーションは以前に保存した情報を取得できます.
Cookieを使用すると、さまざまな目的を達成することができます.これらの目的は、Webサイトがユーザーを覚えるのを助けるためです.例えば、世論調査を実施するサイトは、ユーザーのブラウザが投票に参加したかどうかを示すBoolean値としてCookieを簡単に使用することができ、ユーザーは2回目の投票を行うことができない.ユーザーのログインを要求するサイトは、Cookieによってユーザーがログインしたことを記録することができ、ユーザーは毎回証明書を入力する必要はありません.
Cookieの制限
ほとんどのブラウザでは、最大4096バイトのCookieがサポートされています.これによりCookieのサイズが制限されるので、Cookieで少量のデータを格納したり、ユーザIDなどの識別子を格納したりすることが望ましい.その後、ユーザIDは、ユーザを識別し、データベースまたは他のデータソースからユーザ情報を読み出すために使用することができる.
ブラウザはまた、サイトがユーザコンピュータに格納できるCookieの数を制限する.ほとんどのブラウザでは、サイトごとに20個のCookieしか保存できません.より多くのCookieを格納しようとすると、最も古いCookieは破棄されます.一部のブラウザでは、すべてのサイトから受け入れられるCookieの総数を絶対的に制限し、通常は300個です.
Cookieの制限は、ユーザーがブラウザをCookieの受け入れを拒否するように設定できることです.P 3 Pプライバシーポリシーを定義し、Webサイトのルートディレクトリに配置すると、より多くのブラウザがサイトのCookieを受け入れます.ただし、Cookieを完全に放棄し、他のメカニズムでユーザー固有の情報を格納する必要があります.ユーザ情報を格納する一般的な方法はセッション状態であるが、セッション状態はCookieに依存することを後述する「Cookieとセッション状態」の項で説明する.
Cookieはアプリケーションで非常に有用であるが、アプリケーションはCookieを格納できることに依存してはならない.Cookieを使用してキー機能をサポートしないでください.アプリケーションがCookieに依存する必要がある場合は、ブラウザがCookieを受け入れるかどうかをテストすることができます.このトピックの「ブラウザがCookieを受け入れるかどうかを確認する」の項を参照してください.
Cookieの作成
ブラウザはユーザーシステム上のCookieを管理します.Cookie通過
HttpResponse
オブジェクトはブラウザに送信され、このオブジェクトは公開的に
Cookies
の双曲線コサインを返します.HttpResponseオブジェクトを
Page
クラス
Response
プロパティを使用してアクセスします.ブラウザに送信するすべてのCookieは、このコレクションに追加する必要があります.Cookieを作成する場合は、
Name
および
Value
.各Cookieには、後でブラウザからCookieを読み込むときに認識できるように、一意の名前が必要です.Cookieは名前で格納されるため、同じ名前で2つのCookieを命名すると、そのうちの1つが上書きされます.
Cookieの有効期限と時間を設定することもできます.ユーザーがCookieを作成するサイトにアクセスすると、ブラウザは期限切れのCookieを削除します.アプリケーションがCookie値が有効であると判断した場合、Cookieの有効期間をこの期間に設定する必要があります.有効期限が切れないCookieの場合は、有効期限を現在から50年に設定できます.
Cookieの有効期間が設定されていない場合は、Cookieは作成されますが、ユーザーのハードディスクには保存されません.Cookieはユーザセッション情報の一部としてメンテナンスされる.ユーザーがブラウザを閉じるとCookieは破棄されます.このような非永続的なCookieは、短時間で保存するだけの情報を保存したり、セキュリティ上の理由でクライアントコンピュータに書き込むべきではないディスクの情報を保存したりするのに適しています.たとえば、ユーザーが共通のコンピュータを使用していて、コンピュータのディスクにCookieを書き込みたくない場合は、非永続的なCookieを使用できます.
Cookieは、複数の方法でCookiesセットに追加することができる.次の例では、Cookieを記述する2つの方法を示します.
方法1:
Response.Cookies["userName"].Value = "patrick";Response.Cookies["userName"].Expires = DateTime.Now.AddDays(1);
 
    
  
    
     HttpCookie aCookie = new HttpCookie("lastVisit");
  aCookie.Value 
=
 DateTime.Now.ToString();
  aCookie.Expires 
= DateTime.Now.AddDays(1
);
  Response.Cookies.Add(aCookie);
       Cookies        Cookie,     userNamelastVisit
      Cookie,Cookies           。              , 
  Cookies    
      
        NameObjectCollectionBase 
                 。      Cookie,
        
      
        HttpCookie 
              ,     ,     
      
        Add 
               
Cookies   。     HttpCookie    ,     Cookie             
             ,          Cookie。       ,
        
      
        DateTime 
         。  ,lastVisited         。     Cookie 
        ,  ,            
      
        String 
      。
  

多値Cookie
     Cookie       ,           。       Cookie      
  /  。  /      。(        URL        。)  ,     
    userName   lastVisit     Cookie,          userInfo   Cookie,
         userName   lastVisit               。  ,   
           Cookie     。  ,           Cookie  ,    
       Cookie           。(  ,                  
  ,             Cookie  。)      Cookie         Cookie 
     。    “Cookie    ”       ,Cookie       4096   , 
           20   Cookie。         Cookie,    Cookie      
        20     。  ,   Cookie       50         (    
      ),            ,      4096      。        
         Cookie,       Cookie      ,     200   。     
    Cookie,          Cookie      。              Cookie 
     ,      Cookie        :
    :

  
    
Response.Cookies["userInfo"]["userName"= "patrick";
Response.Cookies[
"userInfo"]["lastVisit"=
 DateTime.Now.ToString();
Response.Cookies[
"userInfo"].Expires = DateTime.Now.AddDays(1
);
    : 
  
    
  HttpCookie aCookie = new HttpCookie("userInfo");
 aCookie.Values[
"userName"= "patrick"
;
 aCookie.Values[
"lastVisit"=
 DateTime.Now.ToString();
 aCookie.Expires 
= DateTime.Now.AddDays(1
);
 Response.Cookies.Add(aCookie);
 
     Cookie    
 
       ,        Cookie           ,     Cookie   
                     。    ,              
       Cookie。  ,           Cookie    :

  
    
  • Cookieの範囲をサーバ上のフォルダに制限します.これにより、サイト上の
  • にCookieを制限できます.
    アプリケーション.
  • 範囲をドメインに設定します.これにより、ドメイン内のどのサブドメインがCookieにアクセスできるかを指定できます.
  •    

      Cookie

      Cookie , Cookie Path :

         HttpCookie appCookie = new HttpCookie("AppCookie");
      appCookie.Value 
    = "written " +
     DateTime.Now.ToString();
      appCookie.Expires 
    = DateTime.Now.AddDays(1
    );
      appCookie.Path 
    = "/Application1"
    ;
      Response.Cookies.Add(appCookie);

                     ,         。        Cookie   
       Application1              。
      ,          www.contoso.com,           Cookie     
         http://www.contoso.com/Application1/
                   。  ,Cookie                ,  http
    ://www.contoso.com/Application2/   http://www.contoso.com/     。
      

       Cookie

       ,Cookie 。 , www.contoso.com

    , Cookie 。(

    Cookie。) ( ,contoso.com、sales.contoso.com supp

    ort.contoso.com), Cookie 。 , Cookie

    Domain , :

      

    Response.Cookies["domain"].Value = DateTime.Now.ToString();
    Response.Cookies[
    "domain"].Expires = DateTime.Now.AddDays(1
    );
    Response.Cookies[
    "domain"].Domain = "support.contoso.com";

      ,Cookie 。 Domain

    Cookie, :

    Response.Cookies["domain"].Value = DateTime.Now.ToString();
    Response.Cookies[
    "domain"].Expires = DateTime.Now.AddDays(1
    );
    Response.Cookies[
    "domain"].Domain = "contoso.com";

      

    Cookie , sales.contoso.com support.contoso.com 。