`

javascript中的 cokkie真正用法

阅读更多
在网上找到的资料,收藏一下

 

function getCookies(name)
{
var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));
if(arr != null) return unescape(arr[2]); return '';
}
function setCookie(name, value, expires, path, domain, secure)
{
var liveDate = new Date();
expires = liveDate.setTime(liveDate.getTime() + expires*60*1000);//毫秒
//expires = new Date((new Date()).getTime() + expires * 60000);//按分钟
document.cookie = name + "=" + escape (value) +
((expires) ? "; expires=" + expires : "") +
((path) ? "; path=" + path : "") +
((domain) ? "; domain=" + domain : "") +
((secure) ? "; secure" : "");
}

以下网上找的资料:
—————————————————
js cookie总结                                                        
最近需要用FSO操作文件,有这样一个需求,用js操纵cookie保存用户上次一打开文件的路径,发现用js操作cookie和用服务器语言操作 cookie有一些差异,还有很多小的细节需要注意,如果运用不得当会引发很多不可预料的结果。当我遇到问题的时候在网上查了很多这方面的资料,发现好多都是简单以理论的方式介绍了js如何操作cookie。但我照着做却发现有些地方根本就不是这么回事,下面我总结了我在用js操作cookie的一些经验。

         用js操纵cookie是通过document对象下的cookie对象,其实document.cookie就是字符串,
所以我们使用它就像使用字符串一样,可以使用字符串的所有方法,只不过这个字符串需要有个格式(key=value),设置cookie的示例代码如下

         document.cookie="key=escape(value)";

         cookie的值不能使用分号(;)、逗号(,)、等号(=)以及空格。在cookie的名中做到这点很容易,但要保存的值是不确定的。如何来存储这些值呢?方法是用escape()函数进行编码,它能将一些特殊符号使用十六进制表示,例如空格将会编码为“20%”,从而可以存储于cookie值中,而且使用此种方案还可以避免中文乱码的出现。value上使用了escape方法。在取值的时候需要unescape(value)对value再进行转码即可。

          如果想设置多个cookie需要多次使用这样的方法。正确的设置方法是:
document.cookie="key=escape(value)";
document.cookie="key1=escape(value1)"
而不是
document.cookie="key=escape(value);key1=escape(value1)";

         如果想取出cookie的值,可以直接调用document.cookie获得,如果有多个值,多个值用分号(;)分隔,每个值用等号(=)分隔,我们可以对cookie先按照分号(;)进行分隔(split),然后再按等号(=)分隔(split)。然后循环比较key的值,如果key相等,则取出 value。需要注意一点,如果有多个值,第二个值的key值前面多一个空格,需要去除。下面我给出获取cookie的示例代码

          function getCookie(key){
var aCookie = document.cookie.split(";");
for (var i=0; i < aCookie.length; i++){  
var aCrumb = aCookie[i].split("=");  
if (key === aCrumb[0].replace(/^\s*|\s*$/,"")){   
return unescape(aCrumb[1]);
}  
} 
}

          经过前面的示例代码在一个页面设置cookie后在这个页面也能取到,但是cookie存在哪里了。通常情况下,cookie会存放在 C:\Documents and Settings\Administrator\Local Settings\Temporary Internet Files目录下。但是我们删除了这个文件夹下的所有文件后,再获得cookie,还能够访问到。关闭浏览器后,再次打开浏览器后还能获得到 cookie。那cookie的默认生存期是多久呢。怎么才能清除cookie呢。非常抱歉,我也不知道存哪了,但是只要注销或重启之后,设置的 cookie将销毁。我个人认为这是设计js的cookie的一个bug.因为用户不能够通过一种方式及时清除cookie是非常不友好的。我们可以通过设置cookie时可以传递一个属性expires,该属性的作用是设置cookie的生存期。设置cookie的生存期的示例代码如下:

      var liveDate = new Date();
liveDate.setTime(liveDate.getTime() + 3*24*60*60*1000);
document.cookie="name=test;expires=" + liveDate.toGMTString();
上面代码设置cookie的name的存活时间为3天。删除cookie的值就是设置expires一个过期的时间即可,示例代码如下
var liveDate = new Date();
liveDate.setTime(liveDate.getTime() - 10000);
document.cookie = "name=test;expires=" + date.toGMTString();

      但是有趣的是,设置了expires属性后,我们在C:\Documents and Settings\Administrator\Local Settings\Temporary Internet Files目录下发现有存储cookie的文件。此时我们删除该文件后,发现设置的cookie确实销毁了。这正符合我们的要求。所以建议用js设置 cookie的时候一定要设置expires属性,正常来说我们要用到cookie的时候就应该根据需求明确设计cookie存活多久。

        下面我们再说一下js操作cookie的作用域。默认情况下js操作cookie的作用域是目录级的,也就是在当前目录下设置的cookie,当前目录及该目录下的所有子目录下的所有文件都能够访问该cookie,例如在http://localhost:8090/APPTest/aaa/testCookie.html中设置的cookie,在http://localhost:8090/APPTest/aaa/目录下的所有文件和http://localhost:8090/APPTest/aaa/bbb/下的所有文件都能够访问到这个cookie,而在http://localhost:8090/APPTest/目录下的文件就不能够访问该cookie。设置cookie时有一个path属性能够改变cookie的有效访问路径。但是目前path只能设置一个参数即"/",代表是根路径。示例代码如下:

         document.cookie="key=escape(value);path=/";

          如果设置了path="/",则不管设置cookie在哪个路径,在http://localhost:8090/APPTest/
下及所有目录及子目录下都能够访问到这个cookie.理论上如果设置path="\aaa",该cookie的作用域应该是aaa目录下及aaa目录下的所有子目录下都能够访问到这个cookie,但实际上并没有实现这样的功能,我认为这也是js实现cookie的一个bug。这里有两个问题需要注意,一是如果设置两个同名的cookie,如http://localhost:8090/APPTest/aaa/下设置了两个cookie,一个设置了path为"/",另一个cookie不带path参数,那么在http://localhost:8090/APPTest/aaa/会访问到两个同名的cookie值,而在路径为http://localhost:8090/APPTest/只能访问到全局的cookie值。但是我们没有办法通过路径去区分。第二个需要注意的就是删除cookie,如果设置cookie时带path属性,那么在删除的时候一定要加上path属性,否则删除的是当前目录下设置的cookie值。

         另外在设置cookie时还能够设置两个属性,分别是domain和secure,domain代表设置cookie的访问域,下面我给出domain基本理论。
例如:http://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。 因为这个参数我没有测试过也没有用过,所以如果当用到这个参数,可以参考上面的理论部分。

         secure代表该cookie是否是安全的。如果设置了该属性,只有使用https协议才能够访问到
该cookie.

         下面给出cookie的完整格式
name=[; expires=][; domain=][; path=][; secure]
名称=<值>[; expires=<日期>][; domain=<域>][; path=<路径>][; 安全]

 

分享到:
评论

相关推荐

    javascript中cookie对象用法实例分析.docx

    javascript中cookie对象用法实例分析.docx

    javascript中cookie对象用法实例分析

    主要介绍了javascript中cookie对象用法,实例分析了javascript针对cookie对象的写入、读取及删除等操作的使用方法,非常具有实用价值,需要的朋友可以参考下

    浏览器中使用JS操作Cookie详解

    并且在Cookie详解这篇文章中,介绍了如何在服务器端和使用JavaScript创建Cookie,并设置属性。 ​我们知道,Cookie是存储在客户端的,并且现在前后端分离慢慢变得流行起来,因此如何在浏览器上可以使用方便快捷的...

    javascript创建cookie、读取cookie

    主要介绍了javascript创建cookie、读取cookie的操作方法,内容简单易学,感兴趣的小伙伴们可以参考一下

    javascript cookie用法基础教程(概念,设置,读取及删除)

    本文实例讲述了javascript cookie用法。分享给大家供大家参考,具体如下: 一、什么是 cookie? cookie 就是页面用来保存信息,比如自动登录、记住用户名等等。 二、cookie 的特点 同个网站中所有的页面共享一套 ...

    javascript操作cookie_获取与修改代码

    javascript操作cookie_获取与修改代码,跟以前的方法有所进步,者使用类的方法。

    JavaScript操作Cookie详解

    主要介绍了JavaScript操作Cookie详解,本文讲解了什么是Cookie、Cookie基础知识、Cookie常见问题、cookie 有两种清除方式、Cookie基础用法、Cookie高级用法等内容,需要的朋友可以参考下

    JavaScript完全自学宝典 源代码

    Calculate1.java 计算浮点数运算结果并调用页面中JavaScript函数的Applet。 Calculate1.class Calculate1.java的字节码文件。 第16章(\c16) 示例描述:介绍JavaScript访问本地文件的各种方法。 16.1....

    cookie-banner:Cookie Banner是一个简单的Javascript库,可以包含在任何网站中,并为用户提供完整的选择退出选项。 在提供的以下链接中查看我们的演示

    Cookie横幅 1.如何快速安装? -在主要的.html页面标题部分插入以下链接标记。 &lt; link rel =" stylesheet " href =" cookie-banner-bottom.css " &gt; -将以下脚本标签插入到您的.html主页中,紧接在正文标签...

    cookie.js:一个小型JavaScript库,可简化cookie

    在JavaScript中使用Cookie很糟糕。 [removed]绝对是JavaScript的丑陋部分之一。 该库旨在提供一种简单而强大的cookie使用方式。用法下载并将其包含在HTML文档中,这将添加一个名为cookie的全局对象: &lt; script ...

    javascript完全学习手册1 源码

    1.3 在Web页面中使用JavaScript 5 1.3.1 HTML的基本结构 5 1.3.2 在HTML中嵌入JavaScript 7 1.3.3 链接JavaScript文件 9 1.4 编写JavaScript的工具 11 1.4.1 使用纯文本编辑器 11 1.4.2 使用专业化脚本编辑工具 13 ...

    JavaScript权威指南(第四版)_javascript_

    《JavaScript权威指南》全面介绍了...本书还包括详细的参考手册,涵盖了JavaScript的核心API、遗留的客户端API和W3C标准DOM API,记述了这些API中的每一个JavaScript对象、方法、性质、构造函数、常量和事件处理程序。

    cookie:在 JavaScript 中操作 cookie 的库 - 您可能应该使用 https

    在#JavaScript烹饪和吃饼干的简单方法(好吃!)。 通过 npm 安装 $ npm install putainde-cookie (--save-dev) 用法 曲奇饼 var cookie = require ( "putainde-cookie" ) cookie.set(name, value[, opts]) ...

    JavaScript权威指南(第6版)(中文版)

    《JavaScript权威指南(第6版)》全面介绍了JavaScript语言的核心,以及Web浏览器中实现的遗留和标准的DOM。它运用了一些复杂的例子,说明如何...中的每一个JavaScript对象、方法、性质、构造函数、常量和事件处理程序。

    cookie使用方法集

    代码演示了用javascript和在jsp页面添加cookie到客户端,包括了在不同文件夹的情况和设置超时的方法。

    Javascript逆向分析+Cookie加密+补环境+逆向学习

    JavaScript逆向分析、Cookie加密、补环境搭建、逆向学习等技术和方法相互交织,共同构 成了一个丰富而复杂的学习和研究领域。深入探索这些领域,将有助于我们更好地理解和运用JavaScript编程,提升自身的反混淆能力...

    JavaScript使用cookie记录临时访客信息的方法

    主要介绍了JavaScript使用cookie记录临时访客信息的方法,涉及javascript操作cookie的技巧,非常具有实用价值,需要的朋友可以参考下

    JavaScript操作cookie类实例

    本文实例讲述了JavaScript操作cookie类。分享给大家供大家参考。具体如下: 用法: 一、设置cookie var cookie = new JSCookie(); // 普通设置 cookie .SetCookie("key1","val1"); // 过期时间为一年 var expire_...

    JavaScript核心技术 PDF扫描版

    《JavaScript核心技术》是一本真正意义上的“新书”,不仅介绍了最新的JavaScript知识和方向,还完全覆盖了当今Web开发中关于JavaScript的所有重要话题,它使用了大量实例代码,图文并茂地讲解了使用JavaScript的...

Global site tag (gtag.js) - Google Analytics