JavaScript如何操作cookie?

所谓 cookie,就是“某些 Web 站点在您的硬盘上用很小的文本文件存储了一些信息,这些文件就称为 Cookie。”—— 这是MSIE 帮助文档上所叙述的。一般来说,Cookies与 CGI 或类似,比 HTML 高级的文件、程序等创建的,但是 javascript 也提供了对 Cookies 的很全面的访问权利。

每个 Cookie 都有失效日期,一旦电脑的时钟过了失效日期,这个 Cookie 就会被删掉。我们不能直接删掉一个 Cookie,但是可以用设定失效日期早于现在时刻的方法来间接删掉它。
而每一“组” Cookies 有规定的总大小(大约 2KB 每“组”),一超过最大总大小,则最早失效的 Cookie 先被删除,来让新的 Cookie“安家”。

我们来看看 cookieJavaScript是如何进行操作的!
首先设置 cookie
每个 cookie都是一个名/值对,可以把下面这样一个字符串赋值给document.cookie:
document.cookie="userId=125";
如果要一次存储多个名/值对,可以使用分号加空格(; )隔开,例如:
document.cookie="userId=828; userName=UFO";
在cookie的名或值中不能使用分号(;)、逗号(,)、等号(=)以及空格。在cookie的名中做
到这点很容易,但要保存的值是不确定的。如何来存储这些值呢?方法是用escape()函数进行编
码,它能将一些特殊符号使用十六进制表示,例如空格将会编码为“20%”,从而可以存储于
cookie值中,而且使用此种方案还可以避免中文乱码的出现。例如:
document.cookie="str="+escape("I love UFO");
相当于:
document.cookie="str=I%20love%20UFO";
当使用escape()编码后,在取出值以后需要使用unescape()进行解码才能得到原来的cookie值,
这在前面已经介绍过。
尽管document.cookie看上去就像一个属性,可以赋不同的值。但它和一般的属性不一样,改变
它的赋值并不意味着丢失原来的值,例如连续执行下面两条语句:
document.cookie="userId=125";
document.cookie="userName=UFO";
这时浏览器将维护两个cookie,分别是userId和userName,因此给document.cookie赋值更像执
行类似这样的语句:
document.addCookie("userId=125");
document.addCookie("userName=UFO");
事实上,浏览器就是按照这样的方式来设置cookie的,如果要改变一个cookie的值,只需重新赋
值,例如:
document.cookie="userId=451";
这样就将名为userId的cookie值设置为了451。
获取cookie的值
下面介绍如何获取cookie的值。cookie的值可以由document.cookie直接获得:
var strCookie=document.cookie;
这将获得以分号隔开的多个名/值对所组成的字符串,这些名/值对包括了该域名下的所有cookie
。例如:
<script type="text/javascript">
<!--
document.cookie="userId=125";
document.cookie="userName=UFO";
var strCookie=document.cookie;
alert(strCookie);
//-->
</script>
当你看到运行效果后,由此可见,只能够一次获取所有的cookie值,而不能指定cookie
名称来获得指定的值,这正是处理cookie值最麻烦的一部分。用户必须自己分析这个字符串,来
获取指定的 cookie值,例如,要获取userId的值,可以这样实现:
<script type="text/javascript">
<!--
//设置两个cookie
document.cookie="userId=125";
document.cookie="userName=UFO";
//获取cookie字符串
var strCookie=document.cookie;
//将多cookie切割为多个名/值对
var arrCookie=strCookie.split("; ");
var userId;
//遍历cookie数组,处理每个cookie对
for(var i=0;i<arrCookie.length;i++){
             var arr=arrCookie .split("=");
             //找到名称为userId的cookie,并返回它的值
             if("userId"==arr[0]){
                    userId=arr[1];
                    break;
             }
}
alert(userId);
//-->
</script>
这样就得到了单个cookie的值

<script src="tag.php?action=relatetag&rtid=110" type="text/javascript"></script>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Cookie是Web开发中一种小的文本文件,它存储在用户的浏览器上,通常由服务器发送给客户端,用于记录和跟踪用户的会话信息。这些信息可以帮助网站识别和个性化用户体验,比如记住用户的登录状态、购物车内容等。 创建一个简单的Cookie步骤如下: 1. **使用HTTP响应头设置Cookie**: 当服务器响应客户端的请求时,可以包含一个Set-Cookie头,例如: ```javascript // JavaScript (Node.js示例) response.setHeader('Set-Cookie', `username=${encodeURIComponent(username)}`); ``` 这里,`username`是要存储的键值对,`encodeURIComponent`确保值被正确编码以适应URL。 2. **JavaScript操作Cookie**: 如果是在客户端(如浏览器)使用JavaScript,可以读取和写入Cookie: ```javascript // JavaScript 示例 function setCookie(name, value, days) { var expires = ''; if (days) { var date = new Date(); date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); expires = '; expires=' + date.toUTCString(); } document.cookie = name + '=' + (value || '') + expires + '; path=/'; } // 读取Cookie function getCookie(name) { var nameEQ = name + '='; var ca = document.cookie.split(';'); for(var i=0;i < ca.length;i++) { var c = ca[i]; while (c.charAt(0)==' ') c = c.substring(1,c.length); if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); } return null; } ``` 3. **注意安全性**: Cookie虽然方便,但也存在安全风险,比如跨站脚本攻击(XSS)和隐私泄露。因此,在实际应用中,应考虑使用HTTPS加密传输,并限制Cookie的内容和过期时间。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值