Cookie增删改查
程序员文章站
2022-05-15 18:28:37
...
cookie
浏览器请求访问服务器,用请求头 首部行等信息来获取数据,服务器就会给出响应头,以及set-cookie(给出的是唯一的cookie)之后就返回给浏览器。当浏览器第二次请求的时候,除了发送请求头之外还要发送cookie:id =’12345’.这样服务器就会去找到这个cookie 并返回数据给浏览器。
控制台 document.cookie得到的是字符串。
一个cookie后面的东西都会被看成是对“;”前面的数据的描写,只当成一个cookie 多个cookie要分开写。
var oDate = new Date();
oDate.setDate(oDate.getDate()+3);
console.log(oDate);
document.cookie = 'age=18;max-age=1000;';
document.cookie ='name=ci;expires='+oDate;
如果没有设置expires 如下,session会话会在浏览器关闭的时候就结束
可以通过以下方法设置cookie的存储路径
document.cookie = 'scholar=vita:expires='+oDate+';path="/"';//设置存储路径
存在的路径不相同就会有多个cookie;
子域可以获得主域的,主域不能获得子域的
例如在
document.cookie = 'scholar=vita:expires='+oDate+';path="/"';
document.cookie = 'scholar=vita:expires='+oDate+';path="/web"';
在/web下使用控制台能看到有 两个路径下的vita ; 但是在localhost下面 也就是直接/下面的不能看到/web的cookie
cookie 增、删除改查
document.cookie = 'scholar=vita:expires='+oDate+';path="/"';
document.cookie = 'scholar=apple:expires='+oDate+';path="/web"';//直接在 name = value修改value
下面的代码是增删查操作
var cookieset = {
addCookie: function(name,value,time){//增
document.cookie = name +'= '+value+';max-age='+time;
return this;
},
deleteCookie: function(name){//删
return this.addCookie(name,' ',-1);//删除数据就把值置为空
},
getCookie: function(name,callback){//获取
var cookieArr = document.cookie.split('; ');//首先把字符串改为数组
console.log(cookieArr);
// cookieArr = cookieArr.split('=');
// console.log(cookieArr);
for(var i = 0; i < cookieArr.length; i++){//不使用forEach()是因为只要找到就可以停止查找
var itemCookieArr = cookieArr[i].split('=');
console.log(itemCookieArr);
if(itemCookieArr[0] ==name){
callback(itemCookieArr[1]);
return this;//如果找到在这里就返回了
}
}
callback(undefined);//如果找不到,就返回undefined
return this;
}
}
cookieset
.addCookie('color','orange',10000)//1万秒后就过期
.addCookie('student','stu',20000)
.addCookie('fruit','apple',10000)
.deleteCookie('student')//删除cookie只需要获取到名字就好
.getCookie('ae',function(data){
console.log(data);
});
那为什么会有cookie呢?
Web应用程序时使用HTTP协议传输数据的。HTTP协议是无状态协议。能够轻松跨过防火墙。一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换数据需要建立新的连接。这意味着服务器无法从连接上跟踪会话。
Cookie的特点:
满足同源策略:
虽然网站images.google.com 与网站www.google.com同属于Google,但是域名不一样,二者同样不能相互操作彼此的Cookie。
Cookie有个数和大小的限制,大小一般为4K。
Cookie在本地可以备更改文件,敏感的数据不要放在cookie里