昨天午睡醒过来的时候看到了boss直聘上有消息,发现是邀请电话面试的信息,我立刻答应下来了。于是四点钟电话很准时就打来了。有些问题都比较开放性。我就没怎么答上来,而且因为太紧张了,问到缓存的时候忘记把强缓存跟协商缓存说出来了,如果电话面试挂了我估计就挂在这里了。
那么说下印象比较深的cookie吧,我的博客项目中使用了localStorage来保存token,之后面试官问我是否知道localStorage之外的缓存,我脑子一抽说了个vuex,我真想给自己一巴掌。第一次电话面试真的是紧张。
之后我说了cookie,然后面试官就问cookie由哪些部分组成。 听到之后我就知道这我不会,只能说不好意思,这个我不太了解。所以这次我就总结了这篇文章。
Cookie
我们可以打开控制台看一下cookie都有哪些属性。按f12后点击application,就能够看到cookie了
Name
这个属性就表示cookie的名字,每个cookie的名字都是唯一的
Value
这个属性表示cookie的值,需要注意的是,cookie的Name属性和Value属性都不允许有逗号,分号,空格的存在,因此如果有着三种形式的符号存在的话,需要将其进行编码。
Domain
就是cookie所在的域名,如果没有设置domain的话,那么会cookie会自动绑定到执行语句的当前域,对于domain属性来讲,也有一个需要注意的地方,就是cookie不能够在同一个域名和该域名下的二级域名之间公用。
Path
这个属性的默认值是/,匹配的是路由,这里匹配的是路由的意思就是比如你的域名是www.danzzzz.xyz,那么路由如果是www.danzzzz.xyz/auth/,那么实际上cookie绑定的是这个/auth
Max-age
这个属性是http1.1新增的属性,用来替代expires的,单位是秒,用来表示cookie在多少秒之后会失效
Secure
因为http是无状态协议,而且http在传输数据的过程中是以明文传输的,因此很容易遭到第三方网站的窃取,如果我们使用secure的话,就能够确保cookie是在https协议下进行传输的,但是这不代表会将cookie加密
其实应该还有一个属性是HttpOnly,这个属性表示不能够被js脚本访问,因为js能够通过document.cookie来获取cookie,所以使用HttpOnly就能够阻止这种情况,在一定程度上防止xss攻击,也就是跨站脚本攻击。