Çerez isme göre silinsin mi?


151

Bu adla belirli bir çerezi nasıl silebilirim roundcube_sessauth?

Aşağıdakiler olmamalıdır:

function del_cookie(name) {
    document.cookie = 'roundcube_sessauth' + 
    '=; expires=Thu, 01-Jan-70 00:00:01 GMT;';
} 

Ve sonra:

<a href="javascript:del_cookie(name);">KILL</a>

roundcube_sessauthKurabiyeyi öldürmek mi?


1
name? Bunun anlamı ne? Yoksa çerez adını belirtmenize izin veren çok yönlü bir sürümden bir akşamdan kalma mı?
paxdiablo

Bunun bir dupe olduğunu düşünme. Özellikle tüm çerezleri silmeyi ister .
paxdiablo

1
Tüm çerezleri silmek istemiyorum ... Sadece bir tane. Ben googling temel kodu bulundu. Ve tabii ki denedim. @Paxdiablo Çerezi adlandırdığımı varsaydım, ama tamamen yanlış olabilirim.
Charlie

@paxdiablo - ...How can I delete a specific cookie
Derek 朕 會 功夫

1
@Derek ve diğerleri, yanlış anlıyor gibisiniz. Gabe'den önerilen dupe'nin bir dupe olmadığını belirttim çünkü önerilen dupe tüm çerezleri silmeyi sordu ve bu soru belirli bir çerezi silmeyi soruyor . Ben herhangi bir şekilde, şekil veya formda bu soru hakkında şikayet değildi :-)
paxdiablo

Yanıtlar:


252

Doğru çerezi sildiğinizden emin olmak için çerezin bulunduğu yolu tanımlamanız gerekir.

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;';
}

Yolu belirtmezseniz, tarayıcı şu anda bulunduğunuz sayfaya göre bir çerez ayarlayacaktır, bu nedenle farklı bir sayfadayken çerezi silerseniz, diğer çerez varlığını sürdürür.

@Evan Morrison'un yorumuna göre düzenleyin.
Bazı durumlarda doğru çerezi tanımlamak için Domainparametrenin gerekli olduğunu unutmayın.
Genellikle olarak tanımlanır Domain=.yourdomain.com. Alan adınızın önüne
bir nokta yerleştirmek , bu çerezin herhangi bir alt alanda bulunabileceği anlamına gelir ( wwwalt alan olarak da sayılır).

Ayrıca, @ RobertT'nin cevabında belirtildiği gibi, HttpOnlyçerezler istemci tarafında JavaScript ile silinemez.


23
Bu beni deli ediyordu! Path = / öğesini ekledikten sonra silebilirdim. Teşekkürler!
duyn9uyen

12
Bu doğru cevap olmalı Path, çoğu durumda olmadan işe yaramıyor .
SuperMarco

9
Ben hem yolu hem de doğru 'Domain = değeri ekleyene kadar bir çerez silmek mümkün değildi; '... Yani ifadem şuydu: document.cookie = "cookieName =; yol = /; son kullanma tarihi = Per, 01 Oca 1970 00:00:01 GMT; domain = .myDomain.com"
Evan Morrison

1
Bu çözüm hala işe yarıyor, ancak bu Max-Age=0tür şeyleri önemsiyorsanız, biraz daha kısaca yazılabilir .
MaxPRafferty

181

Bir çerezi silmek için expirestarihi geçmişte bir şeye ayarlayın . Bunu yapan bir işlev olurdu.

var delete_cookie = function(name) {
    document.cookie = name + '=;expires=Thu, 01 Jan 1970 00:00:01 GMT;';
};

Sonra roundcube_sessauthsadece adlı bir çerez silmek için yapın .

delete_cookie('roundcube_sessauth');

1
Bunun çalışması gerektiğini düşünüyorum (işe yarayacak gibi görünüyor: D!), Ancak firefox'ta sayfam tarafından ayarlanan çerezleri görüntülüyorum ve "KILL" düğmesini tıkladığımda çerez silinmiyor. Neden olduğu hakkında bir fikrin var mı?
Charlie

Bu, Google Chrome'da çalışır. Firebug'u yükleyin ve herhangi bir hata olup olmadığına bakın.

1
Hata yok, sanırım Roundcube'daki çerezleri silmiyor. Muhtemelen diğer çerezleri gayet iyi siler.
Charlie

39
Bu sorunun cevabını arayan kullanıcılar için lütfen aşağıdaki cevaba bakınız. path=/Anahtar tarayıcı uyumluluğu için önemlidir.
bencripps

2
Bu yanıt Chrome'da benim için çalışmadı, Firefox'ta denemedim. Ancak emii'nin aşağıdaki cevabı işe yaradı.
Daniel F

11

// exMins = 0 iletilirse, oluşturulur oluşturulmaz silinir.

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.

Bu örnekte exMins undefined, muhtemelen exdays demek istediniz
bhurlow

Evet .. bunun yerine exMins için argüman exdays yeniden adlandırın .. teşekkürler #BhBh
Kishor Patil

7

Mayıs '12'deki Roundcube sürümü ile durumun gerçekten böyle olup olmadığından emin değilim, ancak şu anki cevap, roundcube_sessauthçerez olarak JavaScript'ten işaretlenemediği için çerezleri silemeyeceğinizdir HttpOnly. Bu, JS istemci tarafı kodundan erişilemediği ve yalnızca sunucu tarafı komut dosyasıyla veya doğrudan kullanıcı eylemiyle (tümleşik hata ayıklayıcı veya bazı eklenti gibi bazı tarayıcı mekaniği aracılığıyla) kaldırılabileceği anlamına gelir.


1

Bu çözümü deneyebilirsiniz

var d = new Date();
d.setTime(d.getTime());
var expires = "expires="+d.toUTCString();
document.cookie = 'COOKIE_NAME' + "=" + "" + ";domain=domain.com;path=/;expires=" + expires;

0

Benim durumumda farklı ortamlar için darbe kodu kullandım.

  document.cookie = name +`=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;Domain=.${document.domain.split('.').splice(1).join('.')}`;
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.