cookie笔记

作者: 修行者12138 | 来源:发表于2020-10-07 12:28 被阅读0次

cookie本质上也是请求头(即header),只是名为cookie

请求头不能有中文,所以cookie中也不能有中文,否则会报错Error: Invalid character in header content ["Cookie"]

cookie有长度限制,各浏览器长度限制不一样,所以较长的内容一般放在Local Storage


image.png

同一个域下的cookie数量也有限制

前端调用后端接口时,默认会把接口的域及父域下的cookie传给后端。
比如接口的域是mall.crazyboy.com,父域是crazy.com,默认会把mall.crazyboy.com和crazy.com这两个域下的cookie传给后端

cookie默认上传的这个特性,有时候会导致问题。
本菜遇到过一次请求异常,参数检查没问题,就是因为传了多余的cookie。
下图为使用postman时,查看/编辑默认上传的cookie


image.png

使用cookie或其他请求头传token有什么区别
有的浏览器禁用cookie,只能在其他请求头(比如Authorization)传token,所以后端拦截器一般会同时在cookie和特定请求头中检查token


image.png

为什么不全都用其他请求头传token
有些场景无法指定请求头,比如img标签,<img src='xxx'></img>这种方式请求图片,无法指定请求头,只能利用cookie默认上传的特性,携带token

chrome控制台cookie的Expires/Max-age是用UTC时间展示,所以会比实际时间早8小时,下图的cookie实际过期时间是17:44:20,所以我们对cookie设置expires的时候,也要用UTC时间

image.png
关于GMT UTC CST等时间格式,详见https://www.jianshu.com/p/7acb500ec572

chrome可以手动添加cookie,并且可以设置domain(正常来说无法跨域写cookie),做爬虫功能时可能需要这样操作


image.png

cookie的HttpOnly属性可以增加安全性,HttpOnly为true时,该cookie不能通过js代码获取,只有在发起请求的时候自动带上。
比如下图的SESSION,request headers中可以看到,但是document.cookie无法获取


image.png image.png

cookie与localStorage,cookie会自动携带到后端,localStorage则不会。
可以把部分数据放在localStorage,按需携带,提高安全性。

相关文章

网友评论

    本文标题:cookie笔记

    本文链接:https://www.haomeiwen.com/subject/qadqpktx.html