Javascript document.cookie stringa sempre vuota

Ho questo strano problema con i cookie di impostazione javascript lato client. Al momento sto sviluppando una piccola demo di 1 pagina per utilizzare i cookie per memorizzare alcune “preferenze”. Si prega di notare che non posso usare una lingua lato server per questa demo o qualsiasi plugin jQuery di terze parti.

Quindi ho scritto un object javascript per impostare un cookie:

var cookie = { set: function (name,value,exdays) { var exdate = new Date(); exdate.setDate(exdate.getDate() + exdays); var value = escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString()); document.cookie=name + "=" + value; console.log(document.cookie); } } cookie.set('foo','bar',2); console.log(document.cookie); 

Restituisce solo una stringa vuota. Sono entrato nella console di Chrome per vedere se posso farlo modificando direttamente document.cookie

 > document.cookie = "foo=bar"; "foo=bar" > document.cookie "" 

Come si imposta un cookie tramite javascript lato client?

Modifica: non sono in modalità di navigazione in incognito e i cookie sono abilitati.

HttpSolo i cookie non sono accessibili da Javascript e i cookie di sessione sono generalmente impostati come cookie HttpOnly. Vedi anche questa domanda StackOverflow: Come leggere un cookie sicuro usando JavaScript

Quindi … controlla se il cookie che vuoi leggere ha il flag “HttpOnly” … Se è così, conosci il colpevole. Non è un bug, è una caratteristica!

Non è ansible impostare i cookie con l’aspetto delle cose se non è in esecuzione in un server web.

file:///C:/Users/me/Desktop/demo/demo.html

però:

http://localhost/demo/demo.html funziona.

Per l’uso e i documenti, vedi qui:

https://developer.mozilla.org/en-US/docs/DOM/document.cookie

Se sei in modalità di navigazione in incognito o hai disabilitato i cookie, non funzionerà.

Questo ha funzionato per me quando è stato eseguito da localhost, eseguendo il canarino chrome 28.0.1472.0:

    localhost cookie      

Eseguilo su un server, visita la pagina e guarda il tuo negozio di biscotti, aggiorna la pagina e guarda la tua console.

Non ha impostato un cookie quando è stato aperto come un file ma ha funzionato ogni volta quando è stato aperto dal server.