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