因为HTTP协议是一种无状态协议,每一次HTTP请求都是独立的,不受它之前和之后的请求的影响,所以比如登录信息,这次请求带着登录的信息,下次请求不知道有没有登录,无法追踪上次的请求,所以如果没有别的手段只能每次传很多参数。
cookie和session,可以与服务器交互通信的。
Cookie:
cookie保存在浏览器端,单个数据大小不超过4KB,是服务器发送到客户端的特殊信息,保存成字符串类型以文本的方式保存在客户端,会随着每次HTTP请求头request header发送到服务器端。如果不在浏览器中设置过期时间,cookie被保存在内存中,浏览器关闭就会删除这些cookie信息;如果设置了过期时间,cookie被保存在硬盘中,直到过期时间才会删除这些信息。
cookie应用场景:记录是否登录,上次登录时间,浏览的页面,浏览次数等
cookie的缺点:
1)存储空间很小,只有4kb,存储数量限制,一般一个站点只能有20个cookie
2)用户可以操作(禁用或者修改删除)cookie,使功能受限
3)安全性较低
4)每次访问都要传送cookie给服务器,浪费带宽,如果保存过多数据影响性能。
获取cookie:
var cookieData = document.cookie;
// cookie是每个cookie键值对通过一个分号+空格的形式串联起来的,例:key1=value1; key2=value2; key3=value3;
设置/修改cookie:
cookie选项包括:
expires(http/1.0协议中的过期时间,GMT格式)、
max-age(http/1.1协议中的单位是秒的时间段,失效时间是创建时间 + max-age)、
domain(域名)、path(路径)、
secure(当请求是HTTPS或者其他安全协议时,包含 secure 选项的 cookie才能被发送至服务器,安全协议时才能在客户端设置secure参数)、
HttpOnly(在客户端是不能通过js代码去访问一个httpOnly类型的cookie的,也不能设置httpOnly参数,这种类型的cookie只能通过服务端来设置)
// 设置cookie以及过期时间
var exp = new Date();
exp.setDate(exp.getDate()