
| cookie | localStorage | sessionStorage | |
|---|---|---|---|
| 大小 | 4kb | 10Mb | 5Mb |
| 兼容 | H4/H5 | H5 | H5 |
| 访问 | 任何窗口 | 任何窗口 | 同一窗口 |
| 有效期 | 手动设置 | 无 | 到窗口关闭 |
| 存储位置 | 浏览器和服务器 | 浏览器 | 浏览器 |
| 与请求一起发送 | 是 | 否 | 否 |
| 语法难易度 | 复杂 | 简易 | 简易 |
| 安全性 | 不安全 | 不安全 | 不安全 |
Cookie:
localStorage:
sessionStorage:
格式:name=value;[expires=date];[path=path];[domain=somewhere.com];[secure]
设置cookie:document.cookie='username=xxx';
获取cookie:alert(document.cookie);
解决存储中文时的乱码问题:编码存储、解码读取
document.cookie='user='+encodeURIComponent('钢铁侠'); //编码写入
alert(decodeURIComponent(document.cookie)); //解码读取
expires:过期时间
必须填写日期对象
系统自动清除过期cookie
默认值为会话,整个浏览器关闭为会话结束
function afterOfDate(n){
var d=new Date();
var day=d.getDate();
d.setDate(n+day);
return d
}
//设置一条7天后过期的cookie
document.cookie="username=xxx;expires="+afterOfDate(7);
Cookie c = new Cookie("username",encodeURIComponent('钢铁侠'));// 新建一个Cookie对象
c.setMaxAge(24*60*60); // 设置过期时间1天,以秒为单位
response.addCookie(c); // 保存cookie到客户端
document.cookie="username=;expires="+afterOfDate(-1);
//将时间设置为过去的天数cookie就被浏览器删掉了
//快速获取过去时间 1970年
new Date(0);
document.cookie="username=;expires="+new Date(0);
格式:name=value;[expires=date];[path=path];[domain=somewhere.com];[secure]
path 限制访问路径
domain 限制访问域名
secure 安全
HttpOnly 安全
//添加cookie
function setCookie(name,value,time){
var date= new Date();
date.setDate(date.getDate()+time);
document.cookie = name+"="+value+";expires="+date;
}
//获得cookie
function getCookie(name){
var arr = document.cookie.split(";");
for(var i=0; i<arr.length; i++){
var arr2 = arr[i].split("=");
if(arr2[0] == name){
return arr2[1];
}
}
return null;
}
//删除cookie
function removeCookie(name){
setCookie(name,"",0)
}
这个比cookie简单的多
<h2>localStorage
特点:浏览器关闭还存在
</h2>
<button onclick="saveDate()">点我保存一个数据</button>
<button onclick="getdate()">点我读取一个数据</button>
<button onclick="delDate()">点我删除一个数据</button>
<script>
let p = {name:'张三',age:18}
function saveDate(){
localStorage.setItem('msg','hello!')
localStorage.setItem('person',JSON.stringify(p))
}
function getdate(){
console.log(localStorage.getItem('person'));
}
function delDate(){
localStorage.removeItem('person')
localStorage.clear()
}
</script>
<h2>
特点:浏览器关闭就没了
</h2>
<button onclick="saveDate()">点我保存一个数据</button>
<button onclick="getdate()">点我读取一个数据</button>
<button onclick="delDate()">点我删除一个数据</button>
<script>
let p = {name:'张三',age:18}
function saveDate(){
sessionStorage.setItem('msg','hello!')
sessionStorage.setItem('person',JSON.stringify(p))
}
function getdate(){
console.log(sessionStorage.getItem('person'));
}
function delDate(){
sessionStorage.removeItem('person')
sessionStorage.clear()
}
</script>