cookie查看和操作

问题

之前面试的时候问到,cookie有哪些属性, 怎么删除一个cookie, 答的吞吞吐吐, 整理一下

cookie查看

以github为例:
在这里插入图片描述

cookie的字段

name
cookie的名字,一个域名下绑定的cookie,name不能相同,相同的name的值会被覆盖掉(但是name 相同,只要 cookie 的 domain ,path , secure 有一项不同,就是不同的 cookie)

value
表示cookie的值,cookie的值要被编码, 但不是必须的。 cookie规定是名称/值是不允许包含分号,逗号,空格的,为了不给用户到来麻烦,考虑服务器的兼容性,cookie的数据都最好编码。

// 例如 tz 设置为 广东;shenzhen, 有中文也有分号, 就需要编码
document.cookie=`tz=${encodeURIComponent('广东;shenzhen')}`

console.log(document.cookie)
// tz=%E5%B9%BF%E4%B8%9C%3Bshenzhen

console.log(decodeURIComponent(document.cookie))
// tz=广东;shenzhen

domain
cookie绑定的域名,如果没有设置,就会自动绑定到执行语句的当前域,cookie有跨域的限制, 但不会判断端口名

path
path这个属性默认是’/’,这个值匹配的是web的路由,举个例子:

//默认路径
www.baidu.com
//blog路径
www.baidu.com/blog  //当路径设置成/blog的时候,其实它会给/blog、/blogabc等等的绑定cookie

expires/max-age
默认情况下, 设置的cookie的expires/max-agesession, 也就是关闭浏览器后,该cookie会被删除
在这里插入图片描述

如果想要cookie存在一段时间,那么你可以通过设置expires属性为未来的一个时间节点(GMT时间)

document.cookie=`mycookie=gg;expires=${new Date(2020,08,1).toGMTString()}`

在这里插入图片描述

但这个属性已经逐渐被 max-age 取代;max-age,是以秒为单位,max-age为正数时,cookie会在max-age秒之后,被删除,当max-age为负数时,表示的是临时储存,不会生出cookie文件,只会存在浏览器内存中,且只会在打开的浏览器窗口或者子窗口有效,一旦浏览器关闭,cookie就会消失,当max-age为0时,又会发生什么呢,删除cookie,因为cookie机制本身没有设置删除cookie,失效的cookie会被浏览器自动从内存中删除,所以,它实现的就是让cookie失效。

利用过期时间可以用来删除cookie:

// 把expires时间设置为过去的时间
let date = new Date()
let sec = date.getTime()
date.setTime(sec - 1)
document.cookie=`mycookie=;expires=${date.toGMTString()};`

// 或者把 max-age 设置为0或负数
document.cookie=`mycookie=;max-age=0;`

secure
当这个属性设置为true时,此cookie只会在https和ssl等安全协议下传输

HttpOnly
这个属性设置为true,就不能通过js脚本来获取cookie的值,能有效的防止xss攻击(也就是用户通过xss输入的恶意代码不能获取到cookie), 以上图为例, _gh_sess, logged_in通过document.cookie是获取不到的, 另外, document.cookie只能拿到非HttpOnly的键值

上述属性,除了name,value,其他可以设置值(指通过js)(HttpOnly不行), 但取不到值

什么是cookies呢,Cookies是一个储存于浏览器目录中的文本文件,记录你访问一个特定站点的信息,且只能被创建这个Cookies的站点读回,约由255个字符组成,仅占4KB硬盘空间。当用户正在浏览某站点时,它储存于用户机的随机存取存储器RAM中,退出浏览器后,它储存于用户的硬盘中。储存Cookies中的大部分信息是普通的,如当你浏览一个站点时,此文件记录了每一次的击键信息和被访站点的地址等。但是许多Web站点使用Cookies来储存针对私人的数据,如:注册口令、用户名、信用卡编号等,即所谓的"追踪cookies",危害绝不亚于木马。 Cookies中的内容大多数经过了加密处理,因此一般用户看来只是一些毫无意义的字母数字组合,只有服务器的CGI处理程序才知道它们真正的含义。 软件简介: IECookiesView是一个专门用来查看IECookies内容的工具, 它可以帮你搜寻并显示出你计算机中所有Cookies档案的数据,包括是哪一个网站写入Cookies的,内容有什么,写入的时间日期及此Cookies的有效期限等等资料。 你是否常常怀疑一些网站写入Cookies内容到你的计算机中是否会对你造成隐私的侵犯?使用本软件就能知道这些Cookies的内容都是些什么,如此这般,你心里就有底了,就该怎么做了。 此软件只对IE浏览器的Cookies有效,而且多多少少有刺探隐私的"嫌疑",所以,个别灵敏度高的杀毒软件会报毒,请留意!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值