Imansible accedere ai cookie da document.cookie in JS, ma il browser mostra i cookie esistenti

Non riesco ad accedere a nessun cookie da JavaScript. Ho bisogno di leggere qualche valore e inviarli tramite JSON per i miei controlli personalizzati.

Ho provato ad accedere ai cookie da JS, come descritto in:

  • http://www.w3schools.com/js/js_cookies.asp
  • Ottieni cookie per nome

Come puoi vedere dal codice, è chiaro come un cristallo il prossimo:

var c_value = document.cookie; 

Quando sto cercando di accedere al valore document.cookie dal web-debugger di Chrome, vedo solo la stringa vuota alle espressioni Watch :

Quindi non posso leggere il valore dei cookie, di cui ho bisogno.

    Ho controllato il nome del cookie, che sto inviando per ottenere un valore associato IS corretto. Inoltre, sto usando il codice sorgente W3Schools per ottenere i cookie, se sei interessato (ma dal 2 ° link, la tecnica è simile).

    Come posso risolvere il mio problema?

    Grazie!

    httponly probabilmente ti httponly cookie httponly . httponly è un flag che puoi impostare sui cookie, il che significa che non è ansible accedervi da JavaScript. Questo per impedire che script dannosi ruby i cookie con dati sensibili o addirittura intere sessioni.

    Quindi devi disabilitare la flag httponly o devi trovare un altro modo per ottenere i dati sul tuo javascript.

    Osservando il tuo codice dovrebbe essere facile disabilitare il flag http only:

     Response.AddHeader("Set-Cookie", "CookieName=CookieValue; path=/;"); Response.SetCookie(new HttpCookie("session-id") { Value = Guid.NewGuid().ToString(), HttpOnly = false }); Response.SetCookie(new HttpCookie("user-name") { Value = data.Login, HttpOnly = false }); 

    Ora dovresti essere in grado di accedere alle informazioni sui cookie da JavaScript. Tuttavia, non so esattamente quale tipo di dati stai cercando di ottenere, quindi potresti invece optare per un altro approccio e, ad esempio, rendere alcuni attributi di dati sulla pagina con le informazioni che ti servono invece di provare a leggere il cookie:

     

     console.log(document.getElementById('example').getAttribute('data-info')); 

    Direi che http è il tuo primo colpevole, ma questo può anche accadere non impostando la portata del tuo cookie.

    Se il sito è stato reindirizzato da un altro dominio, sarà necessario esaminare l’ambito del cookie. Dominio e percorso definiscono l’ambito del cookie, a quali URL deve essere inviato il cookie. A seconda di ciò, potresti non vedere il cookie nella tua risposta.

    Ho riscontrato questo problema durante l’impostazione di un cookie su un accesso SSO SAML riuscito e non è stato ansible recuperare il cookie dal documento perché non è mai stato inviato come parte della richiesta.

    tieni d’occhio anche l’attributo Path del cookie, in quanto il cookie è visibile solo alle sottodirectory in Path. Ho avuto il tuo problema e ho risolto l’impostazione Path “/”

    Se il tuo cookie è impostato come Set-Cookie o Set-Cookie2 non fa parte della raccolta di intestazioni di risposta: http://www.w3.org/TR/XMLHttpRequest/#the-getallresponseheaders%28%29-method

    Restituisce tutte le intestazioni dalla risposta, ad eccezione di quelle il cui nome campo è Set-Cookie o Set-Cookie2.

    Se si utilizza l’autenticazione sicura, in quel caso non è ansible accedere direttamente ai cookie a causa della sicurezza. devi cambiare qualche attributo di risposta sul lato server usando il codice sottostante.

    Response.AddHeader (“Set-Cookie”, “CookieName = CookieValue; path = /;”); Response.SetCookie (new HttpCookie (“session-id”) {Value = Guid.NewGuid (). ToString (), HttpOnly = false}); Response.SetCookie (new HttpCookie (“user-name”) {Value = data.Login, HttpOnly = false});

    Ma non dovresti, perché potrebbe cambiare in modo sicuro e non sicuro, quindi devi trovare una soluzione da fare sul lato server per eliminare i cookie e consentire alcune operazioni.

    È ansible apportare modifiche sul lato server.