javascript

cookie的使用

2019-05-17  本文已影响0人  YINdevelop

1.什么是 Cookie?

  1. Cookie 就是浏览器储存在用户电脑上的一小段文本文件
  2. Cookie 是纯文本格式,不包含任何可执行的代码
  3. Cookie 由键值对构成,由分号和空格隔开
  4. Cookie 虽然是存储在浏览器,但是通常由服务器端进行设置
  5. Cookie 的大小限制在 4kb 左右,每个域名下的cookie数量最多为20个(但很多浏览器厂商在具体实现时支持大于20个)

2.cookie的读、写、删

//写
document.cookie="name=value; expires=Thu, 26 Feb 2116 :50:25 GMT; domain=sankuai.com; path=/; secure"

//读
console.log(document.cookie)

//删(只要将这个cookie的expires 选项设置为一个过去的时间点就行了或者max-age=0)
 document.cookie="name=value; max-age=0"

注:设置多个cookie没法简写,只能写多个document.cookie

3.cookie的属性

每个cookie 都有一定的属性,如什么时候失效,要发送到哪个域名,哪个路径等等。在设置任一个cookie 时都可以设置相关的这些属性,当然也可以不设置,这时会使用这些属性的默认值。

expires

max-age

domain和path

secure

httpOnly

4.cookie的作用域和作用路径

1.作用域(domain属性)

作用域,即cookie的作用范围,要了解作用域,需要先了解什么是域名,具体可以看这篇文章

举个例子:news.163.com 和 sports.163.com 是子域,163.com 是父域。

2.作用路径(path属性)

举个例子:

www.163.com/parent 
www.163.com/parent/childA 
www.163.com/parent/childB

注:在有效的作用域和作用路径下,下面三种情况都是有效的

  1. 访问时会自动带上cookie
  2. 浏览器控制台可以看见cookie
  3. 使用js读写cookie

5.cookie 编码

cookie其实是个字符串,但这个字符串中逗号、分号、空格、中文被当做了特殊符号。所以当cookie的 key 和 value 中含有这几种特殊字符时,需要对其进行额外编码,具体编码方式可戳这 前端常用的url编码方式

var key = encodeURIComponent("a测试;b");
var value = encodeURIComponent("this 值is a value contain , and ;");
document.cookie= key + "=" + value + ";"
console.log('key值:'+document.cookie.split('=')[0])
console.log('key值:'+decodeURIComponent(document.cookie.split('=')[0]))
//key值:name%E6%B5%8B%E8%AF%95%3Bvalue
//key值:name测试;value

参考文章

Cookie 在前端中的实践

聊一聊 cookie

上一篇 下一篇

猜你喜欢

热点阅读