封装Cookie

1.Cookie是浏览器存储数据的一种方式,存储在用户本地,而不是存储在服务器上,是本地存储

,一般会自动随着浏览器每次请求发送到服务器端,在请求Request Headers中会有一个Cookie的字段

2.作用场景:

1.网站的中英文切换

2.利用Cookie跟踪统计用户访问该网站的习惯,可以作为了解用户行为的一种工具,以便给用户提供更人性化的使用体验

3.设置Cookie

不能一起设置,只能单独设置

4.读取Cookie

读取的是一个由名值对构成的字符串,每个名值对之间由“; ”(一个分号和跟一个空格)隔开

5。Cookie的名称(Name)和值(Value)

创建Cookie时必须填写,其他属性可以使用默认值

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

读取时用decodeURIComponent()解码

7.失效(到期)时间

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

如果没有设置失效时间,它存在内存中,当会话结束(浏览器关闭)时,Cookie消失,这样的cookie也称为会话cookie

8.长时间存在的Cookie,设置Expires或Max-age

expires值为Data类型

max-age值为数字,表示当前多少时间+多少秒后过期,单位秒

如果max-age的值为0或者负数,cookie会被删除

设置Cookie的失效时间max-age属性要紧跟在名值对后面设置

9.Domain

Domain限定了访问Cookie的范围(不同域名)

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

10.Path

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

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

11.当Name,Domain,Path这三个字段都相同,才是同一个Cookie

12.HttpOnly

设置了HttpOnly属性的Cookie不能通过JS访问

13.Secure

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

14:封装Cookie

代码很简单,就不标明注释了:)

// 写入
export const set = (name, value, { maxAge, domain, path, secure } = {}) => {

    let cookieText = `${encodeURIComponent(name)}=${encodeURIComponent(value)}`;
    if (typeof maxAge === 'nmber') {
        cookieText += `; max-age=${maxAge}`
    }
    if (domain) {
        cookieText += `; domain=${domain}`
    }
    if (path) {
        cookieText += `; path=${path}`
    }
    if (secure) {
        cookieText += `; secure`
    }
    document.cookie = cookieText
}

// 读取
export const get = name => {
    name = `${encodeURIComponent(name)}`;
    const cookies = document.cookie.split('; ');
    for (let item of cookies) {
        const [cookieName, cookieValue] = item.split('=');
        if (cookieName === name) {
            return decodeURIComponent(cookieValue)
        }
    }
    return undefined;
}

// 删除 
export const remove = (name, { domain, path } = {}) => {
    set(name, '', { domain, path, maxAge: -1 })
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
封装 JavaScriptCookie,可以创建一个名为 "CookieUtil" 的对象,并为该对象定义一些方法来处理 Cookie。以下是一个基本的示例: ```javascript var CookieUtil = { // 获取指定名称的 Cookie 值 get: function(name) { var cookieName = encodeURIComponent(name) + "=", cookieStart = document.cookie.indexOf(cookieName), cookieValue = null; if (cookieStart > -1) { var cookieEnd = document.cookie.indexOf(";", cookieStart); if (cookieEnd == -1) { cookieEnd = document.cookie.length; } cookieValue = decodeURIComponent(document.cookie.substring(cookieStart + cookieName.length, cookieEnd)); } return cookieValue; }, // 设置 Cookie set: function(name, value, expires, path, domain, secure) { var cookieText = encodeURIComponent(name) + "=" + encodeURIComponent(value); if (expires instanceof Date) { cookieText += "; expires=" + expires.toGMTString(); } if (path) { cookieText += "; path=" + path; } if (domain) { cookieText += "; domain=" + domain; } if (secure) { cookieText += "; secure"; } document.cookie = cookieText; }, // 删除指定名称的 Cookie remove: function(name, path, domain, secure) { this.set(name, "", new Date(0), path, domain, secure); } }; ``` 使用示例: ```javascript // 设置一个名为 "username" 的 Cookie,有效期为一天 CookieUtil.set("username", "John Doe", new Date(Date.now() + (24 * 60 * 60 * 1000))); // 获取名为 "username" 的 Cookie 值 var username = CookieUtil.get("username"); console.log(username); // 删除名为 "username" 的 Cookie CookieUtil.remove("username"); ``` 这只是一个简单的封装示例,你可以根据需要进行扩展和修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值