无法通过document.cookie获取到cookie,但是却可以在控制台看到。

HttpOnly属性用于防止JavaScript脚本访问Cookie,增加了网站的安全性,防止XSS攻击。然而,这也意味着通过document.cookie无法获取这类Cookie。虽然HttpOnlyCookie不可用JS读取,但它们仍会在HTTP请求中发送,确保了数据传输的安全。设置此属性通常是一个平衡安全与功能的选择。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

刚刚发现的一个问题,发现document.cookie无法获取到某些cookie。

主要原因是因为cookie的一个属性,httponly !,该cookie是从后端设置的,所以为了安全问题,设为了true,但也带来了一个问题,无法通过js脚本来获取该cookie,只能看得到,但是你获取不到。

目前可以通过将httponly 设为false来进行获取,可以通过在控制台将httponly单选框取消勾选尝试刷新页面。

 setcookie 第七个属性就是设置 httponly 的,设置后无法通过 js 脚本获取。

但是虽然设置了httponly为true,网络请求还是可以正常携带发送的,因为这个属性本质上就是为了防止一些脚本和xss攻击的。

下面为cookie的七个属性:

Cookie名称(必填)Cookie名称必须使用只能用在URL中的字符,一般用字母及数字,不能包含特殊字符,如有特殊字符想要转码。如js操作cookie的时候可以使用escape()对名称转码。
Cookie值(必填)Cookie值同理Cookie的名称,可以进行转码和加密。
Expires(非必填)过期日期,一个GMT格式的时间,当过了这个日期之后,浏览器就会将这个Cookie删除掉,当不设置这个的时候,Cookie在浏览器关闭后消失。
Path(非必填)一个路径,在这个路径下面的页面才可以访问该Cookie,一般设为“/”,以表示同一个站点的所有页面都可以访问这个Cookie。
Domain(非必填)子域,指定在该子域下才可以访问Cookie,例如要让Cookie在a.test.com下可以访问,但在b.test.com下不能访问,则可将domain设置成a.test.com。
Secure(非必填)安全性,指定Cookie是否只能通过https协议访问,一般的Cookie使用HTTP协议既可访问,如果设置了Secure(没有值),则只有当使用https协议连接时cookie才可以被页面访问
HttpOnly(非必填)如果在Cookie中设置了"HttpOnly"属性,那么通过程序(JS脚本、Applet等)将无法读取到Cookie信息。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值