cookie、session、session Strogeとlocal Strongの違い

2121 ワード

まず区別が必要なのはサービスエンドキャッシュで、そのオブジェクトはサーバに保存されています。cookie、session Stroge、local Strongはクライアントキャッシュであり、オブジェクトはブラウザに保存されている。
セッション
sessionオブジェクトはサーバに保存されます。実際、サーバとブラウザの間にはsession idだけが必要であれば、サーバはsession IDに基づいて、ユーザーに対応するセッションオブジェクトを見つけます。セッションデータは一定時間だけ有効です。この時間がserver端に設定されたsession有効期間です。サーバーのsessionストレージデータは安全です。一般的にユーザー情報を保存します。ブラウザは一般データだけを保存するのに適しています。
クッキー
  • cookieデータは、常に同じソースのhttp要求において運ばれる(必要でなくても)。
  • クッキーは、ブラウザとサーバ間を往復します。session Strageとlocastrageは自動的にサーバにデータを送らず、ローカルにのみ保存されます。
  • 前の条のため、cookiesの大きさが大きすぎてはいけません(4 k)。クッキーはHTTPのリクエストヘッダに携帯されています。
  • cookieは、設定された有効期間(サービスエンド設定)内で有効であり、max-age=seconds属性を設定することによって、ブラウザクッキーの有効期間をブラウザに教えます。
  • クッキーの構成はクッキー属性が有名で、値、max-age、path、domain、secure;
  • document.cookie = 'name=cook; max-age=9999; path=/; domain=domain; secure';
    
    document.cookie = 'name=aaa; path=/; domain=domain; secure';
    //    cookie  ,         、    ,   
    //    cookie,              
    
    //   max-age 0      cookie
    
    //  cookie,  document.cookie           ,
    //        '; '  。          
    
    後記:
    クロスドメインはどうやってクッキーを携帯しますか?
    まず、cookiesを携帯できないのは同源戦略によるものです。jsはクロスドメインcookiesにアクセスできません。
    解決方法
  • サーバ端でCROSプロトコルを用いてドメインをまたいでデータにアクセスする問題を解決するには、レスポンスメッセージヘッダAccess-Coontrol-Alllow-Chredentials値が「true」
  • である必要があります。
  • と同時に、レスポンスメッセージヘッダAccess-Coontrol-Origin値が単一ドメイン名を指定する設定が必要です。
  • クライアントは、Ajax要求属性withCredentials=trueを設定し、Ajax要求がすべてCookieを持参するようにする必要があります。
  • // ajax
    $.ajax({
     type: "GET",
     url: url,
     xhrFields: {
        withCredentials: true //     cookie
     },
     processData: false,
     success: function(data) {
        console.log(data);  
     }
    });
    
    // axios
    axios.defaults.withCredentials=true; //  ajax  cookie
    
    session Strogeとlocastrage
  • sessionStrogeとlocal Storrageは一つのsessionのデータに対して記憶されています。これらのデータは同じセッションのページにしかアクセスできません。セッション終了後にデータも破壊されます。session Storrageは永続的なローカルストレージではなく、セッションレベルの記憶だけです。
  • local Storrageは時間制限なしの長期データストアです。自主的に削除しない限り、どれぐらいの期間保存したいですか?
  • は、cookiesに比べてより大きな容量(5 M)
  • である。
  • と同様の操作方法:setItem、getItem、removeItem、clear