Impossible d'accéder aux cookies de document.cookie dans JS, mais le navigateur montre les cookies.

Je ne peux pas accéder à un cookie de JavaScript. J'ai besoin de lire de la valeur et de les envoyer via JSON pour mes contrôles personnalisés.

J'ai essayé d'accéder aux cookies de JS, comme il l'a été décrit à l'adresse suivante:

  • Http://www.w3schools.com/js/js_cookies.asp
  • Obtenir un cookie par nom

Comme vous pouvez le voir au code, il est perçu comme un cristal le suivant:

var c_value = document.cookie; 

Lorsque j'essaie d'accéder à la valeur document.cookie du débogueur Web de Chrome, je ne vois que la chaîne vide dans les expressions Watch :

Je ne peux donc pas lire la valeur des cookies, dont j'ai besoin.

J'ai vérifié le nom du cookie, que j'envoie pour obtenir une valeur associée, est correct. De plus, j'utilise le code source W3Schools pour obtenir des cookies, si vous êtes intéressé (mais à partir du 2ème lien, la technique est similaire).

Comment puis-je résoudre mon problème?

Merci!

    Vous êtes probablement confronté aux cookies de httponly . httponly est un drapeau que vous pouvez définir sur les cookies, ce qui signifie qu'ils ne peuvent pas être consultés par JavaScript. Il s'agit d'empêcher les scripts malveillants de voler des cookies avec des données sensibles ou même des sessions entières.

    Vous devez donc désactiver l'indicateur httponly ou vous devez trouver une autre façon d'obtenir les données sur votre javascript.

    En regardant votre code, il devrait être facile de désactiver le drapeau http seulement:

     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 }); 

    Maintenant, vous devriez pouvoir accéder aux informations sur les cookies de JavaScript. Cependant, je ne sais pas exactement quel type de données vous essayez d'obtenir, alors peut-être que vous pouvez utiliser une autre approche et, par exemple, rendre un attribut de données sur la page avec les informations dont vous avez besoin au lieu d'essayer de lire le cookie:

     <div id="example" data-info="whatever data you are trying to retrieve"></div> 

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

    Si votre cookie est défini comme Set-Cookie ou Set-Cookie2 il ne fait pas partie de la collection d'en-têtes de réponse: http://www.w3.org/TR/XMLHttpRequest/#the-getallresponseheaders%28%29-method

    Renvoie tous les en-têtes de la réponse, à l'exception de ceux dont le nom de champ est Set-Cookie ou Set-Cookie2.