无法从JS中的document.cookie访问cookie,但浏览器显示cookie存在

68 javascript cookies document get key-value

我无法从JavaScript访问任何cookie.我需要读取一些值并通过JSON发送给我的自定义检查.

我试图从JS访问cookie,如下所述:

正如您在代码中看到的那样,它被视为下一个晶体:

var c_value = document.cookie;
Run Code Online (Sandbox Code Playgroud)

当我尝试document.cookie从Chrome的Web调试器访问该值时,我只看到Watch表达式中的空字符串:

所以我无法读取我需要的cookie值.

我已经检查了cookie名称,我发送该名称以获得相关值是正确的.此外,我正在使用W3Schools源代码获取cookie,如果您感兴趣(但从第二个链接,技术类似).

我该如何解决我的问题?

谢谢!

Pee*_*Haa 111

您最有可能处理httponlycookie.httponly是您可以在Cookie上设置的标志,这意味着JavaScript无法访问它们.这是为了防止恶意脚本窃取敏感数据甚至整个会话的cookie.

所以你要么必须禁用httponly标志,要么你需要找到另一种方法来获取数据到你的javascript.

通过查看您的代码,应该很容易禁用仅http标志:

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 });
Run Code Online (Sandbox Code Playgroud)

现在您应该能够从JavaScript访问cookie信息.但是我不确切地知道你想要获得什么样的数据,所以也许你可以选择另一种方法,例如在页面上使用你需要的信息渲染一些数据属性,而不是尝试读取cookie:

<div id="example" data-info="whatever data you are trying to retrieve"></div>
Run Code Online (Sandbox Code Playgroud)

console.log(document.getElementById('example').getAttribute('data-info'));
Run Code Online (Sandbox Code Playgroud)


vin*_*zee 7

我多次遇到同样的问题。每一次都是出于不同的原因。

不同的原因:

  • 场的问题httpOnly。它被设置为false,我试图从控制台访问它。将其设置为true或从源代码访问它就可以了。
  • 场的问题secure。是的true,我只使用http。
  • 的问题Expires / Max-Age. 该 cookie 已过时,并且在 中不可见document.cookie


eja*_*env 5

还要注意 cookie 的 Path 属性,因为 cookie 仅对 Path 下的子目录可见。我遇到了你的问题,我解决了设置路径“/”