初始Cookie|基本用法|三种属性|两种封装|注意事项

Cookie是什么以及他的作用

  Cookie,有时也用其复数形式 Cookies。

  类型为“小型文本文件”,是某些网站为了辨别用户身份,进行Session跟踪而储存在用户本地终端上的数据(通常经过加密)

    由用户客户端计算机暂时或永久保存的信息

    Cookie全称HTTPCookie,简称Cookie

  是浏览器存储数据的一种方式

  因为存储在用户本地,而不是存储在服务器上,是本地存储

  一般会自动随着浏览器每次请求发送到服务器端

 作用:利用 Cookie跟踪统计用户访问该网站的习惯,比如什么时间访问,访问了哪些页面,在毎个网页的停留时间等

  不要再Cookie中保存密码等敏感信息

Cookie的属性:

1Cookie的名称(naem)和值(Value):

    最重要的两个属性,创建Cookie时必须填写,其他属性可以使用默认值

  Cookie的名称或值如果包含非英文字母,则写入时需要使用encodeURIComponent()编码,读取时使用

  decodeURIComponent()解码

 

document.cookie = 'username = alex';
document.cookie = 'username = 张三';

   一般名称使用英文字母,不要使用中午文,值可以使用中文,但是要编码

2.失效时间(到期)时间

  对于失效的Cookie会被浏览器清楚

  如果没有设置失效,(到期)时间这样的Cookie成为会话Cookie

  它存在内存中,当会话结束,也就是浏览器关闭时,Cookie消失

  document.Cookie= 'username=alex';

  想长时间存在,设置Expires或Max-Age

  值为Data

  document.cookie = 'username = alex ; expires = ${new Data'('2024-1-1 00:00:00')};

  max-age

  值为数字,当前时间+多少秒后过期,单位是秒

  document.cookie = ’usernaem = alex ; max-age=5‘;

  document.cookie = ’usernaem = alex ; max-age=${24*3600*30}‘;

  如果 max-age 的是0或负数,则Cookie会被删除

  document.cookie =’username = alex ;max - age=0‘;

  document.cookie =’username = alex ;max - age=-1‘;

Domain域

  Domain限定访问Cookei的范围

  使用JS只能读写当前父域的Cookie,无法读取其他域的Cookie

  document.cookie = ’username = alex ; domain = www.imooc.com‘;

path路径

Path限定了访问Cookie的范围(同一个域名下)

  使用js只能读写当前路径和上级的Cookie无法读写下级的路径的Cookie、

  当 Name  Domain  Path 这三个字段都相同的时候才是同一个Cookie

HttpOnly

  设置HttpOnly属性得Cookie不能通过js去访问

Secure安全标志

Secure限定了只有在使用了http而不是http得情况下才可以发送给服务端

 

 

<script type="module">
    import {set} from'./cookie.js';
    set('username','alex');
    set('username','zs');
    set('age','18');
    set('用户名','张三');

    set('sex','male',{
        maxAge:30*24*3600,
    });
    remove('username');
    remove('用户名');
    console.log(get('username'));
    console.log(get('age'));
    console.log(get('用户名'));
    console.log(get('sex'));
</script>


const set = (name,value,{maxAge,domain,path,secure}= {}) => {
let cookieText = `${encudeURIComponent(naem)}=${encdeURICompnet(value)}`;
if (typeof maxAge === `number`){
    cookieText +=`;max-age=${maxAge}`;
}
if (domain){
    cookieText+=`;domain=${domain}`;
}

if (path){
    cookieText+=`;path=${path}`;
}
if (secure){
    cookieText+=`;secure`;
}

}

Cookie的注意事项

前后端都可以写入和获取Cookie

  Cookie是有数量限制的

    每个域名下的Cookie数量限制

  Cookie有大小限制

    每个Cookie的容量储存很小最多只有4KB左右

  当超过单个域名之后,再设置Cookie,浏览器就会清除以前设置的Cookie

 

posted @ 2023-03-28 10:10  ja不会va  阅读(28)  评论(0编辑  收藏  举报