如何使用 JS 清除所有 Cookies


实现说明:

只要将一个 cookie 的过期时间设置为一个早于现在的时间,那么这个 cookie 就会被清除掉, 清除所有的 cookie 就是将所有 cookie 的过期时间都设置为早于现在的时间, 本案例还根据当前路径,清除更多除了 "/" 路径以外其他可访问的 path 的 cookie

实现代码:


            /**
             * 删除所有cookie
             */
            function deleteAllCookies() {
                //cookie 是一个由分号分隔的字符串,将它分割成数组
                let cookies = document.cookie.split(";");

                //一个早于现在的时间
                let expires = "Thu, 01 Jan 1970 00:00:00 GMT";

                //当前路径
                var pathBits = location.pathname.split('/');

                //遍历所有可访问 cookies
                for (let i = 0; i < cookies.length; i++) {
                    let cookie = cookies[i];
                    let eqPos = cookie.indexOf("=");
                    let name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie;
                    let path = '';
                    //遍历当前路径
                    for (var j = 0; j < pathBits.length; j++) {
                        path += ((path.substr(-1) != '/') ? '/' : '') + pathBits[j];
                        //执行清除
                        document.cookie = `${name}=; expires=${expires}; path=${path}`;
                    }
                }
            }

            deleteAllCookies(); //调用
        

如果 cookie 有 HttpOnly 属性,则无法进行删除,因为 HttpOnly 会禁止 JavaScript 访问这个 cookie。

更简短的实现


            document.cookie.split(";").forEach(function(c) { document.cookie = c.replace(/^ +/, "").replace(/=.*/, "=;expires=" + new Date().toUTCString() + ";path=/"); });
        

这是一个更简短的的实现,一行代码就搞定,但它只清除 path"/" 的 cookie

更多关于 document.cookie 的信息


back home