在网络的世界中,Cookie已经成为了一种不可或缺的技术。但是,要想掌握这项技术,需要掌握document.cookie这个知识点,才能成为一名合格的网页Cookie操作者。
一、什么是Cookie?
在日常使用网络时,我们经常会遇到这样的情况:输入用户名和密码之后,即可自动登录下一次访问。那么,这是怎么实现的呢?
这就要提到Cookie了,官方定义为"Cookie"指某些网站为了辨别用户身份、进行 Session 跟踪而储存在用户本地终端上的数据。 通俗点讲,就是当我们登录站点时,服务器为我们在本地浏览器储存了一份文件,并记录访问状态,再次访问时会自动读取该Cookie信息进行身份验证,避免重复输入。
二、document.cookie属性
要想操作Cookie,必须要使用document.cookie属性,这个属性是一个字符串形式的键值对,其中键和值之间用等号连接,值和下一个键之间用分号和空格分隔。
举个例子:
document.cookie = "name=jack; age=18";
这样就会在当前域下设置两个cookie,一个cookie的键是name,值是jack;另一个cookie的键是age,值是18。
注意事项:
1. 设置Cookie时关键字必须小写,否则会被浏览器视为字符串存储。
2.设置Cookie的路径为当前页面所在的目录,可以指定域名和路径,如
document.cookie = "name=jack; path=/; domain=www.example.com";
三、获取Cookie的值
我们可以通过split()方法来获取我们需要的Cookie值。该方法将字符串分割成部分数组,可以将其应用在我们通过document.cookie获取的字符串上。但需要注意的是,在某些情况下,这种方式不够安全。这是因为字符串可能包含被“URL编码”的特殊字符,如分号、逗号等,这些特殊字符可能会影响使用split()方法进行分割。
代码示例:
var cookiesStr = "name=jack; age=18";
var cookiesArr = cookiesStr.split("; ");
for(var i=0; i var arr= cookiesArr[i].split("="); console.log(arr[0]+": "+arr[1]); } 我们通过分割操作,得到了键值对的数组,进行遍历后输出每个键和它对应的值。 还可以使用小技巧:创建一个函数,通过名称来获取Cookie的值。如: function getCookie(name) { var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)"); if(arr=document.cookie.match(reg)) return unescape(arr[2]); else return null; } 这个函数通过正则表达式来匹配特定名称的Cookie,并返回与该名称关联的值。这是一种更加安全的方法,在处理Cookie之前,应该先进行URL解码,以确保JavaScript正确处理Cookie值中的特殊字符。 四、使用document.cookie进行操作 (1). 设置Cookie的生存时间 使用document.cookie属性,可以设置Cookie的生存时间。我们可以通过设置expires属性来实现,该属性用于设置Cookie的过期时间。 codes示例: var ymd = new Date(); var ymd_sec= 24*60*60; ymd.setTime(ymd.getTime()+(ymd_sec*7));// 保存时间为当前时间加上七天 document.cookie = "name=Jack; expires=" + ymd.toUTCString(); (2).删除Cookie 有时我们需要删除Cookie,可以将Cookie的expires属性设置为过去的时间,这样Cookie就会立即过期,浏览器会自动将其删除。另外,如果需要删除多个Cookie,可以将它们全部删除。删除它们的代码如下: function clearCookie(){ var keys=document.cookie.match(/[^ =;]+(?=\=)/g); if (keys) { for (var i = keys.length; i--;) document.cookie=keys[i]+'=0;expires=' + new Date(0).toUTCString() } } (3). 注意事项 使用document.cookie要注意以下几点: a. 设置过期日期以秒为单位,默认为0,这意味着Cookie将在使用者关闭浏览器时过期。 b.Cookie大小限制为4 KB左右。如果超过这个限制,Cookie极有可能会被浏览器拦截,并且无法正确设置。 c. 在服务器请求时,浏览器会自动发送Cookie,服务器可以通过解析Cookie来获取当前请求的最后状态。 d. 请勿使用敏感信息作为Cookie名称或值。由于Cookie可以存储在本地,这些信息是否安全还需要通过我们自己的程序来解决。 e. Cookie的设置程序最好放在服务器端,在服务端通过头文件进行实现。而不是通过JavaScript代码来实现。 总结: 在使用Cookie时需要注意,可以通过设置Expires属性来控制Cookie在浏览器中的生存时间。如需删除Cookie,可以将其Expires属性设置为过去的时间。请确保不要使用敏感信息作为Cookie的名称或值,并在使用JavaScript时要注意处理Cookie值中的特殊字符。请选择使用服务器端代码来设置Cookie,来控制注意到了敏感信息的保护。