ホームページ ウェブフロントエンド jsチュートリアル JavaScript の cookie_javascript スキルについて詳しく説明します

JavaScript の cookie_javascript スキルについて詳しく説明します

May 16, 2016 pm 03:56 PM
cookie javascript

JavaScript のもう 1 つのメカニズムである Cookie は、真のグローバル変数の要件を満たすことができます。 Cookie は、ドキュメント オブジェクトの Cookie 属性を JavaScript に提供するブラウザによって提供されるメカニズムです。これは JavaScript によって制御できますが、JavaScript 自体のプロパティではありません。

Cookie の概要

前のセクションでは、商品表示ページが常に変化する一方で、不変フレームワークを使用してショッピング列データを保存しましたが、これはグローバル変数をシミュレートする機能を実現できますが、厳密ではありません。たとえば、ナビゲーション フレーム ページ内で右クリックし、ショートカット メニューの [更新] コマンドをクリックすると、JavaScript 変数はすべて失われます。したがって、厳密なクロスページ グローバル変数を実装するには、JavaScript の別のメカニズムである Cookie が真のグローバル変数の要件を満たすことができます。

Cookie はブラウザによって提供されるメカニズムで、ドキュメント オブジェクトの Cookie 属性を JavaScript に提供します。これは JavaScript によって制御できますが、JavaScript 自体のプロパティではありません。 Cookie はユーザーのハード ドライブに保存されているファイルで、通常、ブラウザがドメイン名に再度アクセスすると、Cookie が使用可能になります。したがって、Cookie は 1 つのドメイン名の下で複数の Web ページにまたがることができますが、複数のドメイン名にまたがって使用することはできません。

ブラウザごとに Cookie の実装方法は異なりますが、プロパティは同じです。たとえば、Windows 2000 および Windows XP では、cookie ファイルは、documents and settingsuserNamecookie フォルダに保存されます。通常の命名形式は、userName@domain.txt です。

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 に割り当てることができます。

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";
ログイン後にコピー

当使用escape()编码后,在取出值以后需要使用unescape()进行解码才能得到原来的cookie值,这在前面已经介绍过。

尽管document.cookie看上去就像一个属性,可以赋不同的值。但它和一般的属性不一样,改变它的赋值并不意味着丢失原来的值,例如连续执行下面两条语句:

document.cookie="userId=828"; 
document.cookie="userName=hulk";
ログイン後にコピー

这时浏览器将维护两个cookie,分别是userId和userName,因此给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。例如:



ログイン後にコピー

从输出可知,只能够一次获取所有的cookie值,而不能指定cookie名称来获得指定的值,这正是处理cookie值最麻 烦的一部分。用户必须自己分析这个字符串,来获取指定的cookie值,例如,要获取userId的值,可以这样实现:



ログイン後にコピー

这样就得到了单个cookie的值。

用类似的方法,可以获取一个或多个cookie的值,其主要的技巧仍然是字符串和数组的相关操作。

给cookie设置终止日期

到现在为止,所有的cookie都是单会话cookie,即浏览器关闭后这些cookie将会丢失,事实上这些cookie仅仅是存储在内存中,而没有建立相应的硬盘文件。

在实际开发中,cookie常常需要长期保存,例如保存用户登录的状态。这可以用下面的选项来实现:

document.cookie="userId=828; expiress=GMT_String";

其中GMT_String是以GMT格式表示的时间字符串,这条语句就是将userId这个cookie设置为GMT_String表示的过期时间,超过这个时间,cookie将消失,不可访问。例如:如果要将cookie设置为10天后过期,可以这样实现:

<script language="JavaScript" type="text/javascript"> 
<!-- 
//获取当前时间 
var date=new Date(); 
var expiresDays=10; 
//将date设置为10天以后的时间 
date.setTime(date.getTime()+expiresDays*24*3600*1000); 
//将userId和userName两个cookie设置为10天后过期 
document.cookie="userId=828; userName=hulk; expires="+date.toGMTString(); 
//--> 
</script>

ログイン後にコピー

删除cookie

为了删除一个cookie,可以将其过期时间设定为一个过去的时间,例如:

<script language="JavaScript" type="text/javascript"> 
<!-- 
//获取当前时间 
var date=new Date(); 
//将date设置为过去的时间 
date.setTime(date.getTime()-10000); 
//将userId这个cookie删除 
document.cookie="userId=828; expires="+date.toGMTString(); 
//--> 
</script>

ログイン後にコピー

指定可访问cookie的路径

默 认情况下,如果在某个页面创建了一个cookie,那么该页面所在目录中的其他页面也可以访问该cookie。如果这个目录下还有子目录,则在子目录中也 可以访问。例如在www.xxxx.com/html/a.html中所创建的cookie,可以被www.xxxx.com/html/b.htmlwww.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目录下使用。

如果要使cookie在整个网站下可用,可以将cookie_dir指定为根目录,例如:

document.cookie="userId=320; path=/";
ログイン後にコピー

指定可访问cookie的主机名
和 路径类似,主机名是指同一个域下的不同主机,例如:www.google.com和gmail.google.com就是两个不同的主机名。默认情况下, 一个主机中创建的cookie在另一个主机下是不能被访问的,但可以通过domain参数来实现对其的控制,其语法格式为:

document.cookie="name=value; domain=cookieDomain";

以google为例,要实现跨主机访问,可以写为:

document.cookie="name=value;domain=.google.com"; 
ログイン後にコピー

这样,所有google.com下的主机都可以访问该cookie。

综合示例:构造通用的cookie处理函数

cookie的处理过程比较复杂,并具有一定的相似性。因此可以定义几个函数来完成cookie的通用操作,从而实现代码的复用。下面列出了常用的cookie操作及其函数实现。

1.添加一个cookie:addCookie(name,value,expiresHours)

该函数接收3个参数:cookie名称,cookie值,以及在多少小时后过期。这里约定expiresHours为0时不设定过期时间,即当浏览器关闭时cookie自动消失。该函数实现如下:

<script language="JavaScript" type="text/javascript"> 
<!-- 
function addCookie(name,value,expiresHours){ 
var cookieString=name+"="+escape(value); 
//判断是否设置过期时间 
if(expiresHours>0){ 
var date=new Date(); 
date.setTime(date.getTime+expiresHours*3600*1000); 
cookieString=cookieString+"; expires="+date.toGMTString(); 
} 
document.cookie=cookieString; 
} 
//--> 
</script>

ログイン後にコピー

2.获取指定名称的cookie值:getCookie(name)

该函数返回名称为name的cookie值,如果不存在则返回空,其实现如下:

<script language="JavaScript" type="text/javascript"> 
<!-- 
function getCookie(name){ 
var strCookie=document.cookie; 
var arrCookie=strCookie.split("; "); 
for(var i=0;i<arrCookie.length;i++){ 
var arr=arrCookie[i].split("="); 
if(arr[0]==name)return arr[1]; 
} 
return ""; 
} 
//--> 
</script>
ログイン後にコピー

3.删除指定名称的cookie:deleteCookie(name)

该函数可以删除指定名称的cookie,其实现如下:

<script language="JavaScript" type="text/javascript"> 
<!-- 
function deleteCookie(name){ 
var date=new Date(); 
date.setTime(date.getTime()-10000); 
document.cookie=name+"=v; expires="+date.toGMTString(); 
} 
//--> 
</script>
ログイン後にコピー

以上所述就是本文的全部内容了,希望大家能够喜欢。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 Dec 17, 2023 pm 02:54 PM

WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 はじめに: 技術の継続的な発展により、音声認識技術は人工知能の分野の重要な部分になりました。 WebSocket と JavaScript をベースとしたオンライン音声認識システムは、低遅延、リアルタイム、クロスプラットフォームという特徴があり、広く使用されるソリューションとなっています。この記事では、WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法を紹介します。

Cookie はどこに保存されますか? Cookie はどこに保存されますか? Dec 20, 2023 pm 03:07 PM

Cookie は通常、ブラウザの Cookie フォルダに保存されます。ブラウザの Cookie ファイルは通常、バイナリ形式または SQLite 形式で保存されます。Cookie ファイルを直接開くと、文字化けしたり判読できないコンテンツが表示される可能性があるため、使用することをお勧めします。 Cookie を表示および管理するためにブラウザによって提供される Cookie 管理インターフェイス。

コンピューター上の Cookie はどこにありますか? コンピューター上の Cookie はどこにありますか? Dec 22, 2023 pm 03:46 PM

コンピュータ上の Cookie は、使用するブラウザとオペレーティング システムに応じて、ブラウザ上の特定の場所に保存されます。 1. Google Chrome、C:\Users\YourUsername\AppData\Local\Google\Chrome\User Data\Default \Cookies に保存されます。等

WebSocket と JavaScript: リアルタイム監視システムを実装するための主要テクノロジー WebSocket と JavaScript: リアルタイム監視システムを実装するための主要テクノロジー Dec 17, 2023 pm 05:30 PM

WebSocketとJavaScript:リアルタイム監視システムを実現するためのキーテクノロジー はじめに: インターネット技術の急速な発展に伴い、リアルタイム監視システムは様々な分野で広く利用されています。リアルタイム監視を実現するための重要なテクノロジーの 1 つは、WebSocket と JavaScript の組み合わせです。この記事では、リアルタイム監視システムにおける WebSocket と JavaScript のアプリケーションを紹介し、コード例を示し、その実装原理を詳しく説明します。 1.WebSocketテクノロジー

モバイル Cookie はどこにありますか? モバイル Cookie はどこにありますか? Dec 22, 2023 pm 03:40 PM

携帯電話上の Cookie は、モバイル デバイスのブラウザ アプリケーションに保存されます: 1. iOS デバイスでは、Cookie は Safari ブラウザの [設定] -> Safari -> [詳細] -> [Web サイト データ] に保存されます; 2. Android デバイスでは、Cookie は保存されますChromeブラウザの設定→サイト設定→Cookieなど

ブラウザの Cookie が保存される場所の詳細な説明 ブラウザの Cookie が保存される場所の詳細な説明 Jan 19, 2024 am 09:15 AM

インターネットの普及により、ブラウザを使用してインターネットを閲覧することが生活様式になりました。ブラウザを日常的に使用する中で、オンラインショッピング、ソーシャルネットワーキング、電子メールなど、アカウントのパスワードを入力する必要がある場面に遭遇することがよくあります。この情報は、次回アクセスするときに再度入力する必要がないようにブラウザによって記録される必要がありますが、このような場合に Cookie が役に立ちます。クッキーとは何ですか? Cookie とは、サーバーからユーザーのブラウザに送信され、ローカルに保存される小さなデータ ファイルを指し、一部の Web サイトでのユーザーの行動が含まれています。

JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 Dec 17, 2023 pm 05:13 PM

JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 はじめに: 今日、天気予報の精度は日常生活と意思決定にとって非常に重要です。テクノロジーの発展に伴い、リアルタイムで気象データを取得することで、より正確で信頼性の高い天気予報を提供できるようになりました。この記事では、JavaScript と WebSocket テクノロジを使用して効率的なリアルタイム天気予報システムを構築する方法を学びます。この記事では、具体的なコード例を通じて実装プロセスを説明します。私たちは

簡単な JavaScript チュートリアル: HTTP ステータス コードを取得する方法 簡単な JavaScript チュートリアル: HTTP ステータス コードを取得する方法 Jan 05, 2024 pm 06:08 PM

JavaScript チュートリアル: HTTP ステータス コードを取得する方法、特定のコード例が必要です 序文: Web 開発では、サーバーとのデータ対話が頻繁に発生します。サーバーと通信するとき、多くの場合、返された HTTP ステータス コードを取得して操作が成功したかどうかを判断し、さまざまなステータス コードに基づいて対応する処理を実行する必要があります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法を説明し、いくつかの実用的なコード例を示します。 XMLHttpRequestの使用

See all articles