Cookie の概要
不変のフレームワークを使用してショッピング列データを保存し、商品表示ページが常に変化する場合、グローバル変数をシミュレートする機能は実現できますが、厳密ではありません。たとえば、ナビゲーション フレーム ページ内で右クリックし、ショートカット メニューの [更新] コマンドをクリックすると、JavaScript 変数はすべて失われます。したがって、厳密なクロスページ グローバル変数を実装するには、JavaScript の別のメカニズムである Cookie が真のグローバル変数の要件を満たすことができます。
Cookie は、ドキュメント オブジェクトの Cookie 属性を JavaScript に提供するブラウザによって提供されるメカニズムです。これは JavaScript によって制御できますが、JavaScript 自体のプロパティではありません。 Cookie はユーザーのハード ドライブに保存されているファイルで、通常、ブラウザがドメイン名に再度アクセスすると、Cookie が使用可能になります。したがって、Cookie は 1 つのドメイン名の下で複数の Web ページにまたがることができますが、複数のドメイン名にまたがって使用することはできません。
ブラウザが異なれば Cookie の実装方法も異なりますが、そのプロパティは同じです。たとえば、Windows 2000 および Windows XP では、Cookie ファイルは、documents and settingsuserNamecookie フォルダに保存されます。通常の命名形式は[email protected]です。
Cookie メカニズムはユーザーのハードドライブに情報を保存するため、グローバル変数として使用できます。これが最大の利点の 1 つです。以下のような場合に使用できます。
1. ユーザーのログイン状態を保存します。たとえば、ユーザー ID は Cookie に保存されるため、ユーザーは次回そのページにアクセスするときに再度ログインする必要がなくなります。現在、多くのフォーラムやコミュニティがこの機能を提供しています。 Cookie には有効期限を設定することもでき、制限時間が経過すると、Cookie は自動的に消去されます。したがって、システムはユーザーにログイン状態を維持するよう求めることがよくあります。一般的なオプションは 1 か月、3 か月、1 年などです。
2. ユーザーの行動を追跡します。たとえば、天気予報 Web サイトでは、ユーザーが選択した地域に基づいて地域の気象状況を表示できます。毎回場所を選択するのは面倒ですが、Cookie を使用すると、次回ページを開くときに前回訪問した場所を記憶し、自動的に表示されます。最後のユーザーの地域の気象状況。すべてがバックグラウンドで行われるため、このようなページはあたかも特定のユーザー向けにカスタマイズされているかのように見え、非常に使いやすくなります。
3. ページをカスタマイズします。ウェブサイトがスキンやレイアウトを変更する機能を提供している場合、背景色や解像度などのユーザーのオプションを記録するために Cookie が使用されることがあります。ユーザーが次回訪問するときも、前回の訪問時のインターフェイス スタイルを保存できます。
4. ショッピングカートを作成します。前の例と同様に、Cookie はユーザーが購入する必要がある商品を記録するために使用され、チェックアウト時に均一に送信できます。たとえば、淘宝網では Cookie を使用してユーザーが閲覧した商品を記録し、いつでも比較できるようにしています。
もちろん、上記のアプリケーションは Cookie が実行できるアプリケーションの一部にすぎず、グローバル変数を必要とする関数はさらにあります。 Cookie の欠点は主にセキュリティとプライバシー保護にあります。主に次のカテゴリが含まれます。
1. Cookie が無効になっている場合があります。ユーザーが個人のプライバシー保護に細心の注意を払う場合、ブラウザの Cookie 機能を無効にする可能性があります。2
. Cookie はブラウザに関連しています。つまり、同じページにアクセスした場合でも、異なるブラウザで保存された Cookie には相互にアクセスできません。
3. Cookie は削除される場合があります。各 Cookie はハードディスク上のファイルであるため、ユーザーによって削除される可能性があります。
4. Cookie のセキュリティが十分に高くありません。すべての Cookie は平文形式でファイルに記録されるため、ユーザー名やパスワードなどの情報を保存したい場合は、事前に暗号化することをお勧めします。
Cookie を設定します。
各 Cookie は名前と値のペアです。document.cookie
=”userId=828″;
を使用できます。スペース (;) で区切って分割します。例:
document.cookie=”userId=828; userName=hulk”;
セミコロン (;)、カンマ (,)、および等号 (=) は Cookie 名または値に使用できません。そしてスペース。これを Cookie の名前で行うのは簡単ですが、保存される値は未定義です。これらの値を保存するにはどうすればよいでしょうか?この方法では、escape() 関数を使用してエンコードします。これにより、一部の特殊な記号を 16 進表現で使用できます。たとえば、スペースは「20%」としてエンコードされ、Cookie 値に保存できます。中国語の文字化けの発生も回避します。例:
document.cookie="str="+escape("I love ajax");
同等:
document.cookie="str=I%20love%20ajax";
エンコーディングを使用する場合は、取得後に必須です。値 unescape() を使用してデコードし、以前に導入された元の Cookie 値を取得します。
document.cookie はプロパティのように見えますが、異なる値を割り当てることができます。ただし、一般的な属性とは異なります。たとえば、次の 2 つのステートメントを継続的に実行しても、元の値が失われるわけではあり
ませ
ん
。今回、ブラウザは userId と userName という 2 つの Cookie を保持するため、document.cookie に値を割り当てることは、次のようなステートメントを実行することに似ています。
document.addCookie("userId=828");
document.addCookie("userName=) hulk" );
実際、ブラウザはこの方法で Cookie を設定します。Cookie の値を変更したい場合は、次のように再割り当てするだけで済みます。
document.cookie="userId=929";
これにより
、userId という名前の Cookie 値は 929 に設定されます。
Cookieの値を取得する
Cookieの値を取得する方法を説明します。 Cookie の値は、document.cookie から直接取得できます。
var strCookie=document.cookie;
これにより、セミコロンで区切られた複数の名前と値のペアで構成される文字列が取得されます。これらの名前と値のペアには、ドメイン名の下にある名前が含まれます。すべてのクッキー。
実際の開発では、ユーザーのログイン状態の保存など、Cookieを長期間保存する必要があることがよくあります。これは、次のオプションを使用して実現できます。
document.cookie=”userId=828;expires=GMT_String”;
このうち、GMT_String は GMT 形式で表現された時刻文字列です。このステートメントは、userId Cookie を GMT_String で表される有効期限に設定します。この時間が経過すると、Cookie は消えてアクセスできなくなります。
Cookie の削除
Cookie を削除するには、その有効期限を過去の時刻に設定します。
Cookie にアクセスできるパスを指定します。デフォルトでは、Cookie がページ上に作成されると、そのページが存在するディレクトリ内の他のページからも Cookie にアクセスできます。このディレクトリの下にサブディレクトリがある場合は、そのサブディレクトリからもアクセスできます。たとえば、 www.xxxx.com/html/a.htmlで作成された Cookie には、 www.xxxx.com/html/b.htmlまたはwww.xxx.com/html/some/c.htmlからアクセスできますが、アクセスすることはできません。 www.xxxx.com/d.htmlからアクセスできます。
Cookie がアクセスできるディレクトリを制御するには、path パラメータを使用して Cookie を設定する必要があります。構文は次のとおりです:
document.cookie="name=value; path=cookieDir";
ここで、cookieDir は Cookie がアクセスできるディレクトリを表します。アクセスされる。例:
document.cookie="userId=320; path=/shop";
は、現在の Cookie が shop ディレクトリでのみ使用できることを意味します。
Web サイト全体で Cookie を使用できるようにする場合は、ルート ディレクトリとして cookie_dir を指定できます (例:
document.cookie="userId=320; path=/")。
Cookieに
アクセスできるホスト名の指定は
、ホスト名は、1 つのドメイン内の同じ異なるホストを参照します。たとえば、
www.google.comと gmail.google.com は 2 つの異なるホスト名です。デフォルトでは、あるホストで作成された Cookie に別のホストでアクセスすることはできませんが、domain パラメータを使用して制御できます。構文形式は次のとおりです
。Google を例に挙げます
。
クロスホスト アクセスを実現するには、次のように記述します。
document.cookie="name=value;domain=.google.com";
この方法では、google.com 配下のすべてのホストが Cookie にアクセスできます。
包括的な例: 一般的な Cookie 処理関数の構築
Cookie の処理プロセスは比較的複雑で、いくつかの類似点があります。したがって、Cookie の一般的な操作を完了するためにいくつかの関数を定義することで、コードの再利用を実現できます。一般的に使用される Cookie 操作とその関数の実装を以下に示します。
1.クッキーを設定する
関数 SetCookie(名前,値,有効期限,パス,ドメイン,安全)
{
var expDays = 有効期限*24*60*60*1000;
var expDate = 新しい日付();
expDate.setTime(expDate.getTime()+expDays);
var expString = ((expires==null) ? "" : (";expires="+expDate.toGMTString()))
var pathString = ((path==null) ? "" : (";path="+path))
var domainString = ((domain==null) ? “” : (”;domain="+domain))
var secureString = ((secure==true) ? “;secure” : “” )
document.cookie = 名前 + “= + エスケープ(値) + expString + pathString + domainString + secureString;
}
2.指定された名前の Cookie 値を取得します。
関数 GetCookie(名前)
{
var 結果 = null;
var myCookie = document.cookie + ";";
var searchName = 名前 + "=;
var startOfCookie = myCookie.indexOf(検索名);
var endOfCookie;
if (startOfCookie != -1)
{
startOfCookie += searchName.length;
endOfCookie = myCookie.indexOf(";",startOfCookie);
結果 = unescape(myCookie.substring(startOfCookie, endOfCookie));
}
結果を返します。
}
3.指定した名前の Cookie を削除します。
関数 ClearCookie(名前)
{
var ThreeDays=3*24*60*60*1000;
var expDate = 新しい日付();
expDate.setTime(expDate.getTime()-ThreeDays);
document.cookie=name+”=;expires=”+expDate.toGMTString();
}