mio web app è fatto in modo che quando un utente accede al server aggiunge un'intestazione Set-Cookie alla risposta, in questo modo:
Set-Cookie:JSESSIONID=1; Path=/myApp/; Secure
al logout Cerco di eliminare questo cookie sul client (browser), in quanto non mi interessa se la sessione è stata distrutta con successo sul server fintanto che il cookie viene eliminato. Eventuali sessioni "fantasma" persistenti verranno pulite di volta in volta sul server.
Tuttavia, la mia app non è in grado di eliminare il cookie JSESSIONID. Di 'la funzione di logout è stato chiamato dal https://test.myserver.com/myApp/app/index.html#/mySubPage
e la funzione di logout fa:
delete $cookies["JSESSIONID"];
$location.path("/login");
Il cookie non viene eliminato. L'aggiornamento dell'elenco dei cookie nella scheda "Risorse" in Strumenti per sviluppatori di Chrome mostra che è ancora lì. Ricaricare la pagina di accesso e aggiornare l'elenco dei cookie nella scheda "Risorse" mostra ancora il cookie.
Perché non riesco a eliminare il cookie dal mio client Javascript quando non è un cookie HTTPOnly? È il percorso che sta causando problemi? Non dovrebbe essere, poiché lo script è in esecuzione su una pagina inclusa nel percorso del cookie. I cookie non sono così difficili da gestire normalmente, quindi sono ben consapevole che potrebbe esserci qualcosa di banale che sto trascurando qui - ma qualsiasi aiuto sarebbe molto apprezzato.
UPDATE:
avevo dato la strada sbagliata per la mia app nel mio post originale. Ora è modificato per riflettere il percorso corretto (bene, astratto). Si scopre che questa era una informazione critica per la domanda. AngularJS utilizza il percorso relativo completo dell'app come attributo path di tutti i cookie che crea/elimina, quindi dal momento che il nostro server ha impostato il cookie con un percorso di /myApp/
e l'app era in esecuzione sul relativo percorso di /myApp/app
, Angular stava cercando di eliminare il precedente cookie, che non esiste (per sovrascrivere o eliminare un cookie esistente il nome, il dominio e il percorso devono essere tutti identici a quelli utilizzati durante la creazione del cookie).
Hai incluso ngCookie nel tuo modulo? Come angular.module ('myApp', ['ngCookies']) – asgoth
Sì. Posso leggere il cookie senza problemi. Non ricevo errori da nessuna parte, il cookie rimane semplicemente inserito anche se avrebbe dovuto essere eliminato. –
Hai provato con $ cookieStore.remove (chiave)? – asgoth