可以'无法在JS中访问document.cookie中的cookie,但浏览器显示存在cookie
Can't access cookies from document.cookie in JS, but browser shows cookies exist
我无法从JavaScript访问任何cookie。我需要读取一些值,并通过JSON将它们发送给我的自定义检查。
我尝试过从JS访问cookie,就像在中描述的那样
- http://www.w3schools.com/js/js_cookies.asp
- 按名称获取cookie
正如你在代码中看到的那样,它就像水晶一样清晰——下一个:
var c_value = document.cookie;
当我试图从Chrome的web调试器访问document.cookie
值时,我只看到Watch表达式:处的空字符串
所以我无法读取我需要的cookie值。
我已经检查了cookie名称,我发送该名称是为了获得正确的相关值。此外,如果您感兴趣的话,我正在使用W3Schools源代码来获取cookie(但从第二个链接来看,技术是类似的)。
如何解决我的问题?
您很可能正在处理httponly
cookie。httponly
是一个可以在cookie上设置的标志,这意味着JavaScript无法访问它们。这是为了防止恶意脚本窃取带有敏感数据甚至整个会话的cookie。
因此,您要么必须禁用httponly
标志,要么需要找到另一种方法将数据获取到javascript中。
通过查看您的代码,应该可以很容易地禁用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 });
现在您应该能够从JavaScript访问cookie信息了。然而,我不知道你想得到什么样的数据,所以也许你可以选择另一种方法,例如,在页面上呈现一些带有你需要的信息的数据属性,而不是试图读取cookie:
<div id="example" data-info="whatever data you are trying to retrieve"></div>
console.log(document.getElementById('example').getAttribute('data-info'));
还要注意cookie的Path属性,因为cookie只对Path下的子目录可见。我遇到了你的问题,我解决了设置Path"/"
我多次遇到同样的问题。每一次,都是出于不同的原因。
不同原因:
- CCD_ 5字段的问题。它被设置为
false
,我正试图从控制台访问它。将它设置为true
或从源代码中访问它就成功了 - CCD_ 8字段的问题。它是
true
,而我只使用http - CCD_ 10的问题。cookie已过期,在
document.cookie
中不可见
我认为http只是第一个罪魁祸首,但如果不设置cookie的范围,也可能会发生这种情况。
如果网站已从另一个域重定向,则需要考虑设置cookie的范围。域和路径定义cookie的作用域,cookie应发送到哪些URL。根据这一点,您可能在响应中看不到cookie。
我在成功登录SAML SSO时设置cookie时遇到了这个问题,无法从文档中检索cookie,因为它从未作为请求的一部分发送。
如果您的cookie设置为Set-Cookie
或Set-Cookie2
,则它不属于响应标头集合:http://www.w3.org/TR/XMLHttpRequest/#the-getallresponseheaders%28%29方法
返回响应中的所有标头,字段名为Set-Cookie或Set-Cookie2的标头除外。
如果您使用某种安全身份验证,那么在这种情况下,由于安全原因,您无法直接访问cookie。您必须使用以下代码更改服务器端的一些响应属性。
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 });
但你不应该这样做,因为它可能会从安全变为不安全,所以你必须找到在服务器端删除cookie的解决方案,并允许你做一些操作。
可以在服务器端进行更改。
- MVC C#从jQuery和JSON.stringify创建的cookie中读取值
- 试图用cookie中的信息填充表单
- 网址或 cookie 中的动态值和参数查询,如何
- 如何序列化 jquery 对象,如 cookie 中的下拉列表
- javascript cookie中的var被忽略
- cookie中的三个值
- 可以'无法在JS中访问document.cookie中的cookie,但浏览器显示存在cookie
- 将cookie中的值发送到脚本
- html cookie中的键和值之间的区别是什么
- 将存储在cookie中的令牌发送到服务器并获得布尔值返回
- IE浏览器cookie中的特殊字符
- 如何从存储在cookie中的图像路径加载图像
- 如何使用JavaScript/jQuery添加/推送新值到存储在cookie中的数组
- 用javascript高亮显示存储在cookie中的文本
- 如何运行存储在cookie中的js函数
- 更新cookie中的数组
- 使用保存在cookie中的DOM元素
- 根据cookie中的数据对JSON响应进行排序
- 我如何遍历cookie,然后单击按钮,根据cookie中的值更改url
- 如何删除cookie中的特定值- jquery