从HTTP请求头中获取cookie

8

在Google Chrome中,当我使用Chrome控制台下的“网络”选项卡查看HTTP请求头时,它会提供以下请求头:

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding:gzip, deflate, sdch
Accept-Language:en-US,en;q=0.8
Cache-Control:max-age=0
Connection:keep-alive
Cookie:ASP.NET_SessionId=nlbupfbt32jda1tziep4p21r; .ASPXAUTH=8C94786DD4A3C03C5548973E04A76FF554F38D6EB74E0B006AB3C3F72684E94DC0469E28D22E4BBFA069B82B1CCFB4203627D998990C6C96897DDBB0F611809175D5F06F015604082481F0079AE48DAB7974F3D63242055BEC75F707C545666C67B7C9D9E53F7531020235881E9DA4F3C26FD02B0ED0971D02C64DFE96F67C745119F44BBC9E46DC2CEF61D639EA01B9
... more headers ...

我想要获取 Cookie 下的数据。我尝试了 document.cookie,但它返回一个空字符串。如何获取那个 Cookie 信息呢?

2个回答

8

document.cookies返回空值,因为该cookie几乎肯定标记有HttpOnly属性。

这个属性的存在告诉浏览器禁止通过document.cookie访问cookie的值。

这是一种安全措施,主要是为了防止会话劫持跨站脚本攻击


有没有办法使用JavaScript知道浏览器会话正在使用的cookie?例如,黑客如何猜测正确的cookie并伪造请求。他们不也在使用JavaScript吗? - Daniel Viglione
不幸的是,并非所有网站都使用这个属性,使其易受攻击。更不用说一些系统生成可预测或不安全的会话ID,容易受到暴力破解的攻击。如果网站没有使用安全连接,在中间人攻击的情况下也有可能获取会话cookie。会话cookie也可能被恶意软件或者有物理访问计算机的人窃取 :(. - Alex Booker
@Donato 这回答了你的问题吗? - Alex Booker

1
如果cookie设置了http-only标志,您无法使用JavaScript读取它-这是一项安全措施,旨在防止会话劫持,并应为任何代理标识符(包括会话cookie)设置。

有没有其他方法可以获取cookie?也许可以通过ajax请求,在响应头中以某种方式获取它? - Daniel Viglione
尝试一下。如果它能够工作,那么结果可能会依赖于浏览器。如果您需要一个在Javascript中可用的身份验证令牌,则关闭cookie上的HTTP-Only标志或使用不同的标识符 - 并承担后果。 - symcbean

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接