1

JavaScript を使用して Cookie を作成しました。ログアウト時にクリアしたいもの。サイトはSSLで運営されています。以下は、Cookie の作成と削除の目的で使用した JS コードです。これはプレーンな Cookie であることに注意してください (非 HTTP、非セキュア、可能な限りシンプル)。以下は、Cookie を作成する関数で、Cookie を正常に作成します。この Cookie はセッション Cookie であり、他のすべての詳細は、この Cookie を作成するために使用されるパラメーターです。

login: function () {
"use strict";
var cookieKeys, cookieValues;
if (cookieExists(this.systemPolicyCookie)) {
    cookieKeys = this.activeUserCookieName + '=';
    cookieValues = 'Email=' + this.activeUserCookieValues.Email + '&';
    cookieValues += 'UserId=' + this.activeUserCookieValues.UserId;
    cookieKeys += encodeURIComponent(cookieValues) + cookieDelimiter;
    cookieKeys += 'domain=' + this.activeUserCookieDomain + cookieDelimiter + cookiePath;
    document.cookie = cookieKeys;
    document.location.href = document.location.protocol + '//' + document.location.host + '/User/Landing/';
} else {
    alert('System policies are missing, please login online.');
    document.location.href = document.location.protocol + '//' + document.location.host;
}

}、

次のコード ブロックは、上記で作成した Cookie を削除する必要がありますが、これは機能しません。

logout: function () {
"use strict";
var cookies = cookieArray(),
    name;
for (name in cookies) {
    if (name != null && (this.systemPolicyCookie.toString()
        .toLowerCase() !== name.toString()
        .toLowerCase())) {
        document.cookie = name + '="";-1; path=/; expires=Thu, 01 Jan 1970 00:00:00 GMT';
    }
}
document.location.href = document.location.protocol + '//' + document.location.host;

}、

cookieArray() 関数は、次のようなすべての Cookie のリストを返します。

var cookieArray = function () {
"use strict";
var cookies = {},
counter,
split,
nameValue;
if (document.cookie && document.cookie !== '') {
    split = document.cookie.split(';');
    for (counter = 0; counter < split.length; counter++) {
        nameValue = split[counter].split("=");
        nameValue[0] = nameValue[0].replace(/^ /, '');
        cookies[decodeURIComponent(nameValue[0])] = decodeURIComponent(nameValue[1]);
    }
}
return cookies;

Cookie 削除コードを機能させるのを手伝ってもらえませんか? そうしないと、ブラウザを閉じる必要があります (悪い Ux)

4

1 に答える 1

0

どのブラウザを使用していますか??

私の知る限り、IE は Cookie をキャッシュするため、ブラウザを再起動するまで削除されます。FireFox や Chrome で同じことができるかどうかはわかりません

コードを Chrome や FireFox でテストしてみましたか??

于 2012-10-01T06:14:15.007 に答える