2015-05-06 15 views
5

Ho creato un cookie utilizzando Newcookie() e posso accedervi tramite il browser come di seguito. Ora ho bisogno di leggere il cookie enter image description hereLeggi cookie creato da NewCookie()

function getCookieValue(cookieName) { 
    console.log("=====getCookieValue======="); 
    var name = cookieName + "="; 
    var cookies = document.cookie.split(';'); 
    console.log("=====ALL cookies======="+cookies); 
    if (!cookies) { 
     return null; 
    } 
    console.log("=====cookies.length======="+cookies.length); 
    for (var i = 0; i < cookies.length; i++) { 
     var cookie = cookies[i]; 
     console.log("=====cookies======="+cookies[0]); 
     if (cookie.indexOf(name) == 0) { 
      return cookie.substring(name.length, cookie.length); 
     } 
    } 
    return null; 
} 

Ma usando quel metodo non posso leggere il cookie. Per favore mi consigli su questo. Grazie

+0

Forse usare '.split (';')' (con gli spazi), invece? – Xufox

risposta

1

La tua funzione è quasi perfetta. Hai solo bisogno di cambiare questa linea:

document.cookie.split(';'); 

È possibile esaminare il risultato nella console eseguendo la dichiarazione di cui sopra: si otterrà un array con tutti i cookie , ma ognuna di esse è preceduta da uno spazio bianco. Ecco perché il confronto

if (cookie.indexOf(name) == 0) 

non funziona come previsto, perché la stringa attesa non inizia alla posizione 0, ma a 1.

Pertanto, ti consigliamo di dividere la lista dei cookie non con un singolo punto e virgola ma con un punto e virgola e uno spazio bianco. Io non sono sicuro di tutte i browser là fuori, quindi penso che il modo più sicuro per farlo è con un RegExp che verifica la presenza di un opzionale spazio bianco:

document.cookie.split(/;\s?/); 
+0

Ho cambiato la suddivisione come suggerito. Ma quando guardo la console viene visualizzato come di seguito. document.cookie.split (/; \ s? /) [""]. document.cookie sta anche restituendo una matrice vuota. Significa che la funzione non sta leggendo nessuno dei cookie. Ma posso vedere i cookie dal browser. :( – Hasanthi

+0

Davvero? Ritorna document.cookie nella console? – Xufox

+0

Restituisce [""]. :( – Hasanthi

0

È possibile utilizzare questo ..

document.cookie.split(";", -1) 

Calling String.split (String) restituisce String.split (String, 0) e rifiuta le stringhe vuote. String.split (String, n) con n < 0 non scarterà nulla.

Per una maggiore comprensione è possibile seguire javadocs: - Split docs

+0

grazie, ma document.cookie restituisce null nel mio codice. Non so perché sta accadendo. Posso vedere il cookie dal browser – Hasanthi

+0

Se possibile, puoi condividere la logica di creazione dei cookie – Tanul

+0

Oppure, controlla se la flag httponly o la flag di sicurezza sono impostati o meno. il cookie deve essere inviato su https. Ciò non consentirebbe a javascript di leggere i cookie .. – Tanul