cookie
由于http是无状态的协议,一旦客户端和服务器的数据交换完毕,就会断开连接,再次请求,会重新连接,服务器单从网络连接上是没有办法知道用户身份的。cookie就是为了解决此问题而产生的,每次新的用户请求时,便给用户颁发一个独一无二的身份证,下次访问,必须带上身份证,这样服务器就会知道是哪个用户进行了访问,针对不同用户,做出不同的响应cookie是一个很小的纯文本文件(最多为4K),是浏览器储存在用户的机器上的。储存一些服务器需要的信息,每次请求站点,会发送相应的cookie,这些cookie可以用来辨别用户身份信息等作用。
cookie的属性字段
props | intro |
---|---|
name | cookie的名称 |
value | cookie的值 |
domain | 可以访问cookie的域名 |
path | 可以访问此cookie的页面路径 |
expires/Max-Age | cookie有效的时间 |
Size | cookie的大小 |
httpOnly | js能否读取到cookie信息 |
secure | 是否只能通过https来传递此条cookie |
cookie是以纯文本的方式存储,即cookie的数据类型为String类型
document.cookie = 'name=userInfo'; // 设置cookie的name属性document.cookie = 'username=Jack'; // 在cookie中存储了username信息console.log(document.cookie); // name=userInfo; username=Jack
document.cookie = 'name=userInfo'; // 设置cookie的name属性document.cookie = 'username=Amy'; // 在cookie中存储了username信息console.log(document.cookie); // name=userInfo; username=Amy
通过上面的实例可以知道,给cookie赋值时是不会覆盖cookie的原有的值,当等号前的属性名相同时,才会将原来相同属性名的值覆盖为后来设置的值。注意,cookie的两个字段之间是通过一个分号和空格分隔,而不是只有一个分号
当要给cookie设置非自定义的属性字段时,需要通过字符串追加的方式
例如
let expireDate = new Date();document.cookie += ";expires=" + expireDate.toString();
注意: ";expires="中的分号必须有,如果字段前不加分号则会认为这是一个自定义字段
domain
非顶级域名,如二级域名或者三级域名,设置的cookie的domain只能为顶级域名或者二级域名或者三级域名本身,不能设置其他二级域名的cookie,否则cookie无法生成。
顶级域名只能设置domain为顶级域名,不能设置为二级域名或者三级域名,否则cookie无法生成。
新闻热点
疑难解答
图片精选