roundcube_sessauth
という名前の特定のクッキーを削除するにはどうすればいいですか?
次のようにしないでください。
function del_cookie(name) {
document.cookie = 'roundcube_sessauth' +
'=; expires=Thu, 01-Jan-70 00:00:01 GMT;';
}
その後:
<a href="javascript:del_cookie(name);">KILL</a>
roundcube_sessauth
クッキーを殺しますか?
クッキーを削除するには、expires
の日付を過去の日付に設定します。これを行う関数はそうなるでしょう。
var delete_cookie = function(name) {
document.cookie = name + '=;expires=Thu, 01 Jan 1970 00:00:01 GMT;';
};
それからroundcube_sessauth
という名前のクッキーを削除するためにちょうどしなさい。
delete_cookie('roundcube_sessauth');
正しいクッキーを確実に削除するために、クッキーが存在するパスを定義する必要があります。
function set_cookie(name, value) {
document.cookie = name +'='+ value +'; Path=/;';
}
function delete_cookie(name) {
document.cookie = name +'=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;';
}
パスを指定しないと、ブラウザは現在表示しているページに関連してCookieを設定します。そのため、別のページでCookieを削除しても、他のCookieは存在し続けます。
@Evan Morrisonのコメントに基づいて編集してください。
場合によっては正しいCookieを識別するためにDomain
パラメーターが必要になることに注意してください。
通常、これはDomain=.yourdomain.com
として定義されています。
ドメイン名の前にドットを付けると、このCookieがすべてのサブドメインに存在する可能性があります(www
もサブドメインとしてカウントされます)。
また、@ RobertTの回答で述べられているように、HttpOnly
クッキーはクライアントサイドのJavaScriptで削除することはできません。
// exMins = 0が渡されると、作成と同時に削除されます。
function setCookie(cname, cvalue, exMins) {
var d = new Date();
d.setTime(d.getTime() + (exMins*60*1000));
var expires = "expires="+d.toUTCString();
document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}
setCookie('cookieNameToDelete','',0) // this will delete the cookie.
それがRoundcubeバージョンの5月12日以降の状況かどうかはよくわかりませんが、現時点での答えはHttpOnly
としてマークされているため、JavaScriptからroundcube_sessauth
cookieを削除できないことです。そしてこれはそれがJSクライアントサイドコードからアクセスできないことを意味しますそしてサーバーサイドスクリプトによってまたは直接のユーザーアクションによって(統合されたデバッガまたはプラグインのようないくつかのブラウザメカニズムを通して)除去されることができるだけです。
あなたはこの解決策を試すことができます
var d = new Date();
d.setTime(d.getTime());
var expires = "expires="+d.toUTCString();
document.cookie = 'COOKIE_NAME' + "=" + "" + ";domain=domain.com;path=/;expires=" + expires;