Cookie
- cookie简介
cookie
是一个小文本文件,用于客户端和服务器通信时保存客户端状态。
- cookie弊端
cookie
在不同浏览器中数目限制不一样,IE6以下限制cookie
20个,IE7
以上和firefox
浏览器限制50个,Safari
和Chrome
没有数目限制
过多使用cookie
会造成资源浪费
安全性问题,cookie
会被人截获,截获者不需破译即可利用客户端状态。(解决方法可封装其失效时间) - cookie的属性
控制台输入document.cookie
可查看并非HttpOnly的cookie
。
在Application
中可查看cookie
的全部属性,name
,value
,Domain
,path
,Expires/Max-Age
,Size
,HttpOnly
,Secure
其中HttpOnly
设置cookie
只能通过服务器修改,可防止XSS攻击
Secure
设定cookie
必须在HTTPS支持的安全协议下传送
WebStorage
HTML5提供了浏览器的本地存储WebStorage
,分为以下两种
localStorage
,用户主动删除或封装失效时间
sessionStorage
用于同一回话存储信息,关闭回话将会清除。
Cookie对比WebStorage
- 失效时间
cookie
通过Expires/Max-Age
设定失效时间
localStoage
用户手动清除或封装失效时间
sessionStroage
回话关闭时失效 - API接口
cookie
需要自行封装
sessionStorage
已有接口 - 服务器通信
cookie
会在浏览器和服务器之间通信
WebStorage
只会存储在本地
封装一个cookie
var cookie = {
setCookie: function (name, value, time) {
let data = new Data().getTime() + time
document.cookie = name + "=" + value + ";Expires=" + data
},
getCookie: function (name) {
let str = document.cookie
let strAll = str.split(";")
for (let i = 0; i < strAll.length; i++) {
let strCoo = strAll[i].split("=")
if (strCoo[0] === name) return strCoo[1]
}
return
},
getAll: function () {
return document.cookie()
},
remove: function (name) {
setCookie(name, "", -1)
}
}