【问题标题】:JavaScript isn't getting all cookiesJavaScript 没有获取所有 cookie
【发布时间】:2013-11-09 00:53:54
【问题描述】:

我正在尝试使用 JavaScript 获取存储的 cookie。这是通过检查页面并转到资源在 Google Chrome 中显示的 cookie 列表。

当我运行代码时:

alert(document.cookie);

它只显示 K----S-----C---- cookie,而不是 adminhtml cookie。如何访问 adminhtml cookie?

================================================ ====

编辑:

根据所选答案,JavaScript 无法访问仅 HTTP cookie。虽然我找到了解决方法。它可能不是最安全的,但在这种需要获取 cookie 信息的场景中,试试这个。

使用PHP将cookie信息写入隐藏的div:

<div id="adminhtml" style="visibility:hidden"><?php
    echo $_COOKIE['adminhtml'];
?></div>

然后用javascript获取div的innerhtml:

<script>
    var cookieValue = document.getElementById("shopperid").innerHTML;
</script>

【问题讨论】:

标签: javascript cookies


【解决方案1】:

adminhtml 似乎是一个 HttpOnly cookie。您无法从 javascript 访问 HttpOnly cookie。

引用自维基百科,找不到官方文档:

大多数都支持 HttpOnly 属性 现代浏览器。在受支持的浏览器上,HttpOnly 会话 cookie 仅在传输 HTTP(或 HTTPS)请求时使用, 从而限制来自其他非 HTTP API 的访问(例如 JavaScript)。此限制减轻但并未消除 通过跨站点脚本 (XSS) 窃取会话 cookie 的威胁。 此功能仅适用于会话管理 cookie,不适用于其他 浏览器 cookie。

【讨论】:

  • 太棒了,谢谢!我不知道这是否是最安全的做事方式,但我找到了一种解决方法。我会把它作为编辑发布给任何可能想要它的人。
猜你喜欢
  • 1970-01-01
  • 2021-09-19
  • 2016-01-14
  • 2015-02-08
  • 1970-01-01
  • 1970-01-01
  • 2015-07-07
  • 1970-01-01
相关资源
最近更新 更多