Devo eliminare i cookie lato client con lo stesso nome ma con percorsi diversi. Qual è il modo migliore per farlo in javascript.Rimozione di cookie con lo stesso nome ma percorsi diversi
risposta
Basta specificare lo stesso percorso del cookie che si desidera rimuovere, dandogli una scadenza passata.
document.cookie = 'name=value1; path=/';
document.cookie = 'name=value2; path=/path/';
alert(document.cookie); // name=value1; name=value2
document.cookie = 'name=; path=/path/; expires=' + new Date(0).toUTCString();
alert(document.cookie); // name=value1
Cambiare è per scadere il cookie con un percorso di /
sarà comunque scade solo uno dei cookie - il percorso specificato deve corrispondere al percorso impostato:
document.cookie = 'name=; path=/; expires=' + new Date(0).toUTCString();
alert(document.cookie); // name=value2
Per rimuovere entrambi, si 'll deve scadere ognuno con il loro percorso:
document.cookie = 'name=; path=/; expires=' + new Date(0).toUTCString();
document.cookie = 'name=; path=/path/; expires=' + new Date(0).toUTCString();
alert(document.cookie); // {blank}
Ora, questi esempi presuppongono si sta navigando /path/
o una sotto-directory di esso.
[modifica]
Per rimuovere alla rinfusa, provare qualcosa di simile:
function expireAllCookies(name, paths) {
var expires = new Date(0).toUTCString();
// expire null-path cookies as well
document.cookie = name + '=; expires=' + expires;
for (var i = 0, l = paths.length; i < l; i++) {
document.cookie = name + '=; path=' + paths[i] + '; expires=' + expires;
}
}
expireAllCookies('name', ['/', '/path/']);
Demo: http://jsfiddle.net/M2dZ3/
È inoltre possibile finte ricerche percorso di scissione e l'iterazione window.location.pathname
:
function expireActiveCookies(name) {
var pathname = location.pathname.replace(/\/$/, ''),
segments = pathname.split('/'),
paths = [];
for (var i = 0, l = segments.length, path; i < l; i++) {
path = segments.slice(0, i + 1).join('/');
paths.push(path); // as file
paths.push(path + '/'); // as directory
}
expireAllCookies(name, paths);
}
È possibile impostare un cookie con gli stessi parametri, ma una data nel passato:
document.cookie =
'ppkcookie2=another test; expires=Fri, 3 Aug 2001 20:47:11 UTC; path=/'
vedere alcune preziose informazioni on quirksmode
[EDIT] Per eliminare i cookie con lo stesso nome, è possibile provare:
function delete_cookie (cookie_name)
{
var cookie_date = new Date (); // current date & time
cookie_date.setTime (cookie_date.getTime() - 1);
document.cookie = cookie_name += "=; expires=" + cookie_date.toGMTString();
}
Questo rimuoverà anche i cookie che non hanno il percorso "/"? – JKown
vuoi dire che vuoi rimuovere tutti i cookie con lo stesso nome, prova il codice dalla mia risposta modificata – JMax
La preoccupazione è che eliminerà troppi cookie. Ma scadere con 'path = /' dovrebbe lasciare intatti gli altri. –
- 1. struct con lo stesso nome ma diversi Stati in C++
- 2. più funzioni con lo stesso nome ma diversi tipi di argomenti come parametro di modello
- 3. Lavorare in git con directory con lo stesso nome ma casi diversi in Windows
- 4. Utilizzando una variabile con lo stesso nome in diversi spazi
- 5. metodo con lo stesso nome e parametri diversi in Ruby
- 6. Diversi utenti ottengono lo stesso cookie - valore in .ASPXANONYMOUS
- 7. Come può l'JPA riconoscere due classi con lo stesso nome ma in pacchetti diversi?
- 8. Entity Framework Codice Prima - due entità con lo stesso nome ma in diversi spazi dei nomi
- 9. Swift - ottengo riferimento a una funzione con lo stesso nome ma diversi parametri
- 10. NHibernate DuplicateMappingException quando due classi hanno lo stesso nome ma diversi spazi dei nomi
- 11. Automake e file con lo stesso nome
- 12. Pacchetti con lo stesso nome di funzione
- 13. con lo stesso nome di una macro
- 14. Come dichiarare diversi attributi stylable con lo stesso nome per tag diversi?
- 15. 2 fagioli con lo stesso pacchetto ma diverso, come autowire?
- 16. Cookie non inviati nell'app di Windows Phone, ma i cookie vengono inviati con lo stesso codice nell'app di Windows 8
- 17. Classi interne con lo stesso spazio dei nomi ma in diversi assembly?
- 18. Namespace e classe con lo stesso nome?
- 19. Confronta percorsi di esecuzione dello stesso codice sotto diversi ingressi
- 20. moduli Gradle Android con lo stesso nome
- 21. Macro e funzione con lo stesso nome
- 22. parametri denominati con lo stesso nome
- 23. Funzione e variabile con lo stesso nome
- 24. Funzioni multiple con lo stesso nome
- 25. Percorsi multipli per lo stesso controller
- 26. Typedef e enum con lo stesso nome?
- 27. Excel.Workbook.SaveAs (...) con lo stesso nome file
- 28. PHP obsolete: metodi con lo stesso nome
- 29. Più percorsi con lo stesso callback anonimo tramite Slim Framework
- 30. Definizione dello stesso bean Spring con lo stesso nome
Quindi se il percorso può potenzialmente contenere 6 valori diversi, dovrei usare 6x document.cookie con il percorso corretto? – JKown
@JKown In sostanza. Tuttavia, suggerirei di eseguire il looping dei percorsi in modo da avere solo 1 istruzione 'document.cookie'. Vedi la mia modifica per un'opzione. –
Grazie, funziona per me. – JKown