Cookie

作者: 未路过 | 来源:发表于2022-10-21 20:32 被阅读0次

    1.认识Cookie

    image.png

    文本文件
    辨别用户身份的数据
    登录的时候,客户端登录,向服务器发送数据用户密码和账户名,服务器验证用户名和密码,服务器生成cookie,发送给浏览器,浏览器存储cookie,以后发送其他请求的时候携带这个cookie。

    内存cookie,浏览器关闭掉就会消失。

    cookie里面有过期时间,当浏览器发现浏览器发送给我们的response的header里面有一个cookie的化,我们开发者不需要做任何的事情,浏览器会自动读取这个cookie,并保存到我们的客户端上面。
    下次我们发送请求的时候,我们request它会自动再它的header里面携带上cookie。服务器拿到这个cookie以后,读取里面内容,来验证这个用户是不是已经登陆过的用户,是的话,给你返回对应的资源,不是的话,应该会报错。

    2.Cookie的用法

    在vscode
    D:\FrontEnd\04_尚硅谷js高级\课堂资料day01_32\课堂\资料\cookie-server\src> node index.js

    然后浏览器输入,http://localhost:8000/test,打开工具栏,查看network

    image.png
    RespnseHeaders里面
    image.png
    然后浏览器就在下次发送请求的时候,就会携带这个请求
    发送http://localhost:8000/demo
    image.png

    然后Request Header里面,就自动写有这个cookie


    image.png
    testRouter.get('/demo', (ctx, next) => {
      // 读取cookie
      const value = ctx.cookies.get('name');
      ctx.body = "你的cookie是" + value;
    });
    
    // 登录接口
    testRouter.get('/test', (ctx, next) => {
      // maxAge对应毫秒
      ctx.cookies.set("name", "why", {
        maxAge: 60 * 1000,
        httpOnly: false
      })
    
      ctx.body = "test";
    });
    //它的有效期只有60s,超过的化,访问demo就是undefined
    

    3.Cooke的常见属性

    image.png

    查看cookie的两种方式
    1.点击小叹号


    image.png
    image.png

    2.在application里面


    image.png

    如果用户需要退出登录,我们要删除cookie的化怎么办?
    document.cookie
    直接这么拿是拿不到服务器设置的cookie的。返回的是空字符串,但是我们可以通过这个设置cookie
    document.cookie="age=18"
    这样可以增加cookie


    image.png

    但是还是不能获得原来服务器的cookie
    document.cookie=“”也是删不掉的。这是重新设置一个cookie,不过没有内容


    image.png
    image.png

    蓝色的那一行。
    可以
    document.cookie="name=why;Max-Age=0;"
    直接让这个cookie过期掉。

    服务器返回的cookie是通过js,document.cookie是拿不到的,只能重新设置,让他无效。


    image.png

    4.cookie的缺点

    1.浏览器会将cookie附加到每一次http请求中。只要浏览器有cookie,就会在每一次同damain的时候,请求头里面都有它。其实我们有些请求是不需要有对应的cookie的。会浪费流量。

    2.cookie在传输的时候是明文传输的,在开发者工具里面就能看见。就算服务器加密了,但也是铭文传输的,有一定的安全风险。

    3.有大小限制。最大4kb,.cookie的存储是4kb左右,存储量较小,一般页面最多存储20条左右信息。localStorage和sessionStorage的存储容量是5Mb(官方介绍,可能和浏览器有部分差异性)
    5Mb=1024*5kb

    1. 如果使用cookie来验证登录,我们服务器要知道客户有没有登陆,必须通过cookie。浏览器会自动加上,但是ios,android,小程序都是客户端,对于某一些客户端来说,它可能不能自动给它设置cookie。比如ios,得手动给请求头里面添加cookie。所以说用cookie来做验证有一些麻烦。

    现在大部分都是使用token,对称加密或者非对称加密。
    我们可以根据当前请求需不需要验证登录来决定要不要携带这个cookie。

    相关文章

      网友评论

          本文标题:Cookie

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