cookies在js和netcore联合下又欺负了我
一开始我是使用js的document.cookie
以下代码是转发:
//写cookies
function setCookie(name,value)
{
var Days = 30;
var exp = new Date();
exp.setTime(exp.getTime() + Days*24*60*60*1000);
document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
}
//读取cookies
function getCookie(name)
{
var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");
if(arr=document.cookie.match(reg))
return unescape(arr[2]);
else
return null;
}
//删除cookies
function delCookie(name)
{
var exp = new Date();
exp.setTime(exp.getTime() - 1);
var cval=getCookie(name);
if(cval!=null)
document.cookie= name + "="+cval+";expires="+exp.toGMTString();
}
但是!!!这样在页面B写入cookie之后,重新访问页面A,是不存在cookie,再跳转到页面B却有cookie,此时还没有写入新的cookie
也就是说,js的document.cookie是写入到当前页面的!而不是域名对应的浏览器缓存
试了path设置成"/",也试了domain也还是不行
所以,最后我改成了用后端写入cookie
不过,要注意的是cookie长度限制,超长会直接为空,最大应该是4k
顺便一提:如果只是存在前端,使用localStorage也不错