नाम से कुकी हटाएं?


151

मैं नाम के साथ एक विशिष्ट कुकी कैसे हटा सकता हूं 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कुकी को मार डालो ?


1
name? किस बात का? या यह एक अधिक बहुमुखी संस्करण से हैंगओवर है जो आपको कुकी नाम निर्दिष्ट करने की अनुमति देता है?
पैक्सिडाब्लो

ऐसा मत सोचो कि यह एक धोखा है। यह विशेष रूप से सभी कुकीज़ को साफ़ करने के बारे में पूछता है ।
पैक्सिडाब्लो

1
मैं सभी कुकीज़ हटाना नहीं चाहता ... बस एक। मुझे चारों ओर से गुग्लिंग से मूल कोड मिला। और निश्चित रूप से मैंने इसकी कोशिश की। @Paxdiablo मैंने इसे कुकी के नामकरण के लिए ग्रहण किया था, लेकिन मैं पूरी तरह से गलत हो सकता हूं।
चार्ली

@paxdiablo - ...How can I delete a specific cookie
डेरेक 會

1
@ डेरेक एट अल, आप गलत समझ रहे हैं। मैं कह रहा था कि गैब से प्रस्तावित डूप बिल्कुल भी धोखा नहीं था क्योंकि प्रस्तावित डूप ने सभी कुकीज़ को हटाने के बारे में पूछा था और यह सवाल एक विशिष्ट कुकी को हटाने के बारे में पूछता है । मैं इस सवाल के बारे में किसी भी तरह से शिकायत नहीं कर रहा था , आकार या रूप :-)
paxdiablo

जवाबों:


252

आपको उस पथ को परिभाषित करना चाहिए जिस पर कुकी मौजूद है ताकि यह सुनिश्चित हो सके कि आप सही कुकी को हटा रहे हैं।

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

यदि आप पथ निर्दिष्ट नहीं करते हैं, तो ब्राउज़र आपके द्वारा वर्तमान में मौजूद पृष्ठ के सापेक्ष एक कुकी सेट करेगा, इसलिए यदि आप किसी भिन्न पृष्ठ पर कुकी को हटाते हैं, तो दूसरा कुकी अपना अस्तित्व जारी रखता है।

@ इवान मॉरिसन की टिप्पणी के आधार पर संपादित करें।
ध्यान रखें कि कुछ मामलों में सही कुकी की पहचान करने के लिए, Domainपैरामीटर की आवश्यकता होती है।
आमतौर पर इसे परिभाषित किया जाता है Domain=.yourdomain.com। अपने डोमेन नाम के सामने
एक डॉट रखने का मतलब है कि यह कुकी किसी भी उप-डोमेन ( wwwउप-डोमेन के रूप में भी गिना जाता है) पर मौजूद हो सकती है ।

इसके अलावा, जैसा कि @ रॉबर्टटी के उत्तर में उल्लेख HttpOnlyकिया गया है, ग्राहक पक्ष में कुकीज़ को जावास्क्रिप्ट के साथ नहीं हटाया जा सकता है।


23
यह मुझे पागल कर रहा था! पाथ = / जोड़े जाने के बाद, मैं हटाने में सक्षम था। धन्यवाद!
duyn9uyen

12
यह सही उत्तर होना चाहिए, यह Pathज्यादातर मामलों में बिना काम नहीं करता है ।
सुपरमार्को

9
जब तक मैंने पथ और सही 'डोमेन = मूल्य दोनों को नहीं जोड़ा तब तक मैं एक कुकी को हटाने में सक्षम नहीं था; '... तो मेरा बयान था: document.cookie = "cookieName =; path = /; expires = Thu, 01 Jan 1970 00:00:01 GMT; डोमेन = .myDomain.com"
इवान मॉरिसन

1
यह समाधान अभी भी काम करता है, लेकिन Max-Age=0अगर आप इस तरह की चीजों की परवाह करते हैं, तो थोड़ा और स्पष्ट रूप से लिखा जा सकता है ।
मैक्सपराफर्टी

181

किसी कुकी को हटाने के expiresलिए अतीत में कुछ करने की तारीख निर्धारित करें । एक फ़ंक्शन जो ऐसा करता है।

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

फिर roundcube_sessauthबस नाम की एक कुकी को हटाने के लिए।

delete_cookie('roundcube_sessauth');

1
मुझे लगता है कि यह काम कर रहा होना चाहिए (ऐसा लगता है कि यह काम करना चाहिए: D!), लेकिन मैं फ़ायरफ़ॉक्स में अपने पृष्ठ द्वारा सेट कुकीज़ देख रहा हूं और जब मैं "KILL" बटन क्लिक करता हूं, तो कुकी नष्ट नहीं हो रही है। कोई विचार क्यों?
चार्ली

यह Google Chrome में काम करता है। फायरबग स्थापित करें और देखें कि क्या कोई त्रुटि है।

1
कोई त्रुटि नहीं, मुझे लगता है कि यह सिर्फ राउंडक्यूब में कुकी को हटाना नहीं है। यह शायद ठीक अन्य कुकीज़ हटाता है।
चार्ली

39
इस प्रश्न का उत्तर ढूंढ रहे उपयोगकर्ताओं के लिए, कृपया नीचे दिया गया उत्तर देखें। path=/कुंजी ब्राउज़र संगतता के लिए महत्वपूर्ण है।
बेनक्रिप्प्स

2
यह जवाब मेरे लिए क्रोम पर काम नहीं किया, फ़ायरफ़ॉक्स में इसे आज़माया नहीं। लेकिन नीचे दिए गए emii के जवाब ने काम किया।
डैनियल एफ

11

// अगर एक्जाम दिया गया है = 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.

exMins इस उदाहरण में अपरिभाषित है, शायद आपका मतलब है एक्सरसाइज़
bhurlow

हाँ .. इसके बजाय नाम बदलने के तर्क को छोड़ दो। धन्यवाद #BhBh
किशोर पाटिल

7

मुझे यकीन नहीं है कि मई 12 से राउंडक्यूब संस्करण के साथ यही स्थिति थी, लेकिन वर्तमान में एक जवाब है कि आप roundcube_sessauthजावास्क्रिप्ट को जावास्क्रिप्ट से हटा नहीं सकते हैं , क्योंकि यह चिह्नित है HttpOnly। और इसका मतलब यह है कि यह जेएस क्लाइंट साइड कोड से एक्सेस नहीं किया जा सकता है और इसे केवल सर्वर साइड स्क्रिप्ट या डायरेक्ट यूजर एक्शन (कुछ ब्राउज़र मैकेनिक्स जैसे एकीकृत डिबगर या कुछ प्लगइन के माध्यम से) से हटाया जा सकता है।


1

आप इस उपाय को आजमा सकते हैं

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

0

मेरे मामले में मैंने विभिन्न वातावरण के लिए ब्लो कोड का उपयोग किया।

  document.cookie = name +`=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;Domain=.${document.domain.split('.').splice(1).join('.')}`;
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.