🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[toc] #### 1.什么是cookie ``` 1.没有可执行代码的纯文本 2.存储在浏览器上,用于网站辨别用户身份 3.cookie默认是临时存储,浏览器关闭时自动销毁,除非设置cookie的过期时间 4.cookie一般不超过4kb 5.不同域名下的cookie是独立的 ``` #### 2.cookie如何工作 ``` 1.浏览器向服务器发送请求 2.服务器设置cookie并且发送给浏览器 3.浏览器将cookie保存下来 4.以后的请求浏览器都会在request header里面添加cookie字段发送给服务器 ``` #### 3.cookie有哪些字段 ``` Domain: 限制cookie可以送达的主机名 Path: 限制cookie可以被发送到的路径 Expires: 指定cookie的到期时间 Max-Age: 指定从现在开始cookie会存在的秒数,优先级比Expires更高 HttpOnly: 如果为true,则无法通过document.cookie获取到cookie,方式xss攻击 Secure: 只有在https下才能将cookie发送到服务器 SameSite: 让cookie在跨站请求时不会被发送,阻止跨站请求伪造(CSRF),有三个参数 1.None:无论是否跨站,都可以发送,以前这个是默认值 2.Strict仅允许一方请求携带Cookie 3.Lax:允许部分第三方请求携带Cookie // chrome80之后默认值 ``` #### 4.操作cookie 1.创建: ```js document.cookie = 'username=xu' ``` 2.修改: 修改时需要保持path/domain与以前一致,否则相当于新增 ```js document.cookie="username=John Smith; expires=Thu, 18 Dec 2043 12:00:00 GMT; path=/"; ``` 3.删除: 把cookie的过期时间设置为以前的时间,path/domain需要一致 ```js document.cookie = "username=; expires=Thu, 01 Jan 1970 00:00:00 GMT"; ```