设置domain,但是cookie清不干净怎么办。写个方法供你CV( 耍小聪明 )

325 阅读1分钟

Cookie清除原理

Cookie的清除就是设置失效时间。

为什么会出现Cookie删不掉的情况

我碰到Cookie删不掉的情况是设置了domain,做同一主域名下的数据共享。 当清除时,如果域名混乱的话,就会出现cookie清除不掉的问题。

( 更重要的是开发时的规划有问题,数据共享时,域的设置比较混乱 )

代码

function clearAllCookie() {
    // 获取所有 cookie
    let cookies = document.cookie.split(';')

    const host = window.location.host
    // 嵌套一个递归函数,将每一级域名下的cookie都清除
    function setDomain(host, cookie) {
        const cookieEach = cookie
        if (host.includes(import.meta.env.VITE_DOMAIN)) {
             cookie += ';expires=Thu, 01 Jan 1970 00:00:00 GMT;path=/;'
             cookie += '; domain=' + host
             document.cookie = cookie
             
             const reg = /^\w{0,100}[.]/g
             const hostDomain = host.replace(reg, '')
             setDomain(hostDomain, cookieEach)
        }
    }

    // 遍历所有 cookie,并将过期时间设置为过去
    for (let i = 0; i < cookies.length; i++) {
        let cookie = cookies[i]
        setDomain(host, cookie)
    }
}