为什么document.cookie没有显示网站的所有cookie?

时间:2009-06-20 17:49:17

标签: javascript cookies

我去了一个使用vBulletin 3.8的论坛。当我登录时,我使用firebug来查看设置了哪些cookie。我看到这些饼干:

  

__ utmb,__ utmc,__ utma,__ utzz,bbsessionhash,vbseo_loggedin,bbpassword,bbuserid,bblastactivity,bblastvisit

他们都有一个值集,域名是相同的。

但是当我使用JavaScript查看它们时,它只看到了这些cookie:

  

__ utmb,__ utmc,__ utma,__ utmz,vbseo_loggedin,bblastactivity,bblastvisit

在萤火虫中,我只看到这三个饼干:bbsessionhash,bbpasword和bbuserid,它们实际上是设置的。在HTTPOnly列中的HTTPOnly。这是什么意思,是因为我无法使用document.cookie在JavaScript中看到这些Cookie?

2 个答案:

答案 0 :(得分:80)

来自http://en.wikipedia.org/wiki/HTTP_cookie

  

Cookie不会直接显示   客户端程序,如   如果已发送JavaScript,则为JavaScript   HttpOnly旗帜。从这一点来说   查看服务器,唯一的   与正常人的差异   case是set-cookie标头   line添加了一个包含的新字段   字符串`HttpOnly':

     

Set-Cookie: RMID=732423sdfs73242; expires=Fri, 31-Dec-2010 23:59:59 GMT; path=/; domain=.example.net; HttpOnly

     

当浏览器收到这样的   cookie,应该用它作为   通常在以下HTTP交换中,   但不要让它可见   客户端脚本。    HttpOnly标志不是任何标准的一部分,并未在所有浏览器中实现。

2017年更新:自2009年以来已经过去了很多时间,HttpOnly标头标志成为section 5.2.6 of RFC6265中定义的标准,其中描述了存储语义在同一文档中(在整个RFC文本中查找“http-only-flag”)。

没有方式可以从“非HTTP”API访问有关HttpOnly Cookie的任何内容,例如: JavaScript的。按照设计,既不能阅读也不能写这样的cookie。

答案 1 :(得分:0)

可以将此扩展名用于取消选中HttpOnly,然后在JavaScript https://chrome.google.com/webstore/detail/editthiscookie/fngmhnnpilhplaeedifhccceomclgfbg

中运行document.cookie