`

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对象的基本概念、使用方法以及具体实例。 #### 二、Cookie概述 Cookie是由服务器发送到客户端的一小段数据,它存储在用户的浏览器中,并可以在未来的请求中被发送回服务器。...

    Javascript Cookie操作类的封装

    在JavaScript中,Cookie是一种在客户端存储少量数据的机制,它对于网页应用的用户状态管理和临时存储信息具有重要作用。本文将详细讲解如何封装一个Cookie操作类,实现对Cookie的增删改查功能。 首先,理解Cookie的...

    javascript cookie 操作框架 XCookie

    JavaScript Cookie 操作框架 XCookie 是一个用于方便地管理和操作浏览器cookies的工具,它简化了JavaScript中处理cookie的复杂性。在Web开发中,cookies经常被用来存储用户状态、会话信息或其他临时数据,而XCookie...

    CookiesjsJavaScript客户端的Cookie操作库

    这些方法简化了JavaScript中处理Cookie的复杂性。 3. **跨域与安全:** Cookies.js 可能会涉及跨域问题,因为默认情况下,Cookie只能被设置它的域所读取。如果需要跨域共享,需要设置Cookie的`domain`属性。同时,...

    javascript操作cookie

    - 在现代Web开发中,为了提高安全性,可以考虑使用HTTP-only Cookie来防止JavaScript访问Cookie。 - 使用JavaScript操作Cookie时要注意编码和解码,避免特殊字符导致的问题。 - 当处理大量的Cookie时,需要注意...

    使用JavaScript实现Cookie的增删改查操作

    以上就是使用JavaScript进行Cookie操作的基本方法。在实际应用中,我们还可以考虑添加更多的功能,如处理多个Cookie、设置路径和域、处理特殊字符等。通过封装这些操作,可以创建更高级的Cookie管理工具,方便在项目...

    javascript 中Cookie读、写与删除操作.docx

    通过上述方法,我们可以方便地在JavaScript中管理Cookie。需要注意的是,在处理Cookie时一定要考虑到安全性问题,例如不要在Cookie中存储敏感信息,并且在必要时使用`secure`属性确保Cookie只能通过HTTPS传输。同时...

    Javascript中关于Cookie存储Array集合

    在JavaScript中,Cookie是用于在用户浏览器中存储小量数据的一种机制。它们是HTTP协议的一部分,主要用于跟踪用户会话、存储用户首选项或保存登录状态。Cookie由服务器生成,并通过HTTP响应头发送到浏览器,浏览器在...

    javascript中cookie对象用法实例分析

    JavaScript中的cookie对象用法是一个重要的前端技术,主要涉及到网站与用户之间的数据存储和交互。本文将详细解析如何在JavaScript中实现对cookie的操作,包括写入、读取以及删除cookie。 首先,我们要明确cookie是...

    JavaScript数据存储 Cookie篇

    JavaScript中的Cookie是客户端数据存储的一种常见方式,主要用来在用户浏览器端存储小量信息,尤其适用于维护用户会话状态。本文将深入探讨Cookie的基本概念、组成部分、操作方法以及相关注意事项。 1. **Cookie的...

    JavaScript环境中网络课程开发之cookie技术应用研究.pdf

    JavaScript环境中网络课程开发之cookie技术应用研究 一、什么是Cookie? Cookie是由Netscape开发的作为持续保存状态信息和其他信息的方式。其本质是以一定格式存储特定信号的文本文件。Cookie首先是为CGI程序设计...

    cookiejs一个用于处理浏览器cookie的简单轻量级JavaScriptAPI

    Cookie.js是一个专为JavaScript开发者设计的轻量级库,主要用于管理和操作浏览器中的cookie。这个库的主要优点是它的简洁性和低资源占用,使得它成为处理cookie的理想选择,尤其适用于那些对性能和加载速度有较高...

    javascript 文本框下拉提示与cookie应用实例

    JavaScript操作Cookie的方法通常包括: 1. 设置Cookie:`document.cookie = "name=value; expires=date; path=path; domain=domain; secure";` 2. 读取Cookie:通过`document.cookie`字符串分割获取特定名称的Cookie...

    javascript.cookie

    - **创建Cookie**: 在JavaScript中,可以使用`document.cookie`属性来创建Cookie。例如,创建一个名为"user",值为"John"的Cookie: ```javascript document.cookie = "user=John; expires=Thu, 31 Dec 2099 23:59:...

    javascript小甜饼_cookie方法

    本文将深入探讨Cookie的基本概念、工作原理、创建与使用方法,并通过分析标签"源码"和"工具"来展示实际应用中的实现。 首先,Cookie是由服务器端发送到客户端(用户的浏览器)的一小段文本信息,浏览器在接收到...

    cookie中设置了HttpOnly属性,那么通过js脚本将无法读取到cookie信息,这样能有效的防止XSS攻击.zip_js设置cookie值

    这两种方法都将创建一个名为"username"的Cookie,并将其HttpOnly属性设为true,禁止JavaScript访问。 **PHP设置HttpOnly Cookie** 在PHP中,可以通过`setcookie()`函数来设置Cookie,包括HttpOnly属性。下面的代码...

    Javascript操纵Cookie实现购物车程序.txt

    通过上述分析,我们可以看出使用JavaScript操纵Cookie实现购物车功能是一个实用且高效的方法。它不仅能够帮助开发者快速实现基本的购物车功能,还可以根据实际需求进行扩展和优化。需要注意的是,在实际项目中还应...

    IIS环境下和阿帕奇环境下 js的Cookie使用方法

    JavaScript中的Cookie是Web开发中常用的一种数据存储机制,它允许在客户端存储少量的数据。这篇教程将深入探讨在IIS(Internet Information Services)和Apache两种不同的Web服务器环境下,如何使用JavaScript来操作...

    jscript中使用cookie

    **JavaScript Cookie 使用详解** 在Web开发中,JavaScript的全局变量在不同页面间通常是无法共享的,但是有一种机制——Cookie,可以实现跨页面的全局数据存储。Cookie是由浏览器提供的功能,它允许JavaScript通过`...

    javascript 读写cookie

    以上就是使用JavaScript操作Cookie的基础方法。在实际应用中,还需要考虑安全性问题,例如设置`secure`标志确保Cookie仅通过HTTPS传输,以及设置`HttpOnly`标志防止通过JavaScript脚本读取Cookie等。

Global site tag (gtag.js) - Google Analytics