js複数のクッキーをクリアする時は一つの問題だけクリアします.

3206 ワード

前に一つのプロジェクトをする時、一つの登出機能があります.クッキーを全部クリアする必要があります.このクッキーの期限が切れる時間を全部ゼロにすればいいと思います.
(ここでExpiresを使用しない理由は、サーバーが北京時間ではないかもしれません.そうすると、Expiresを現在のローカル時間に設定すると無効になります.)
コードは簡単です.以下の通りです.
        const keys = document.cookie.match(/[^=;]+(?==")/g);
        let cookie = '';
        for (let key of keys) {
        // cookie     ,    0
        cookie += `${value}=0; max-age=0`;
        }
        document.cookie = cookie;
結果として、私がデバッグした時、クッキーは完全にクリアされていませんでした.あるいは最初のクッキーだけがクリアされました.私は長い間苦しめました.最後にmdnに行って、document.co okieのドキュメントを調べてやっと分かりました.元々はdocument.co okieの割り当ての時に、新しいクッキーを設定するしかないです.
原語:
Note that you can only set/udate a single cookie at a time using this method.
他のキーはこのクッキーの属性を更新するためです.これで何度も更新します.新しいコードは以下の通りです.
        const keys = document.cookie.match(/[^=;]+(?==")/g);
        keys.forEach(value => document.cookie = `${value}=0; max-age=0`);
むしろ簡単になりました.
問題解決後、まとめてみます.コードを書く時にはこのような当たり前の気持ちがあってはいけません.未知または不確定なものに対しては、やはり文書の一番頼りになる部分を調べます.