一. cookie和session
1. cookie不属于http协议范围,由于http协议无法保持状态,但实际情况,我们却又需要“保持状态”,因此cookie就是在这样一个场景下诞生。 cookie的工作原理是:由服务器产生内容,浏览器收到请求后保存在本地;当浏览器再次访问时,浏览器会自动带上cookie,这样服务器就能通过cookie的内容来判断这个是“谁”了。
2. cookie虽然在一定程度上解决了“保持状态”的需求,但是由于cookie本身最大支持4096字节,以及cookie本身保存在客户端,可能被拦截或窃取,因此就需要有一种新的东西,它能支持更多的字节,并且他保存在服务器,有较高的安全性。这就是session。
3.问题来了,基于http协议的无状态特征,服务器根本就不知道访问者是“谁”。那么上述的cookie就起到桥接的作用。我们可以给每个客户端的cookie分配一个唯一的id,这样用户在访问时,通过cookie,服务器就知道来的人是“谁”。然后我们再根据不同的cookie的id,在服务器上保存一段时间的私密资料,如“账号密码”等等。通常cookie保存用户加密后的的token.
4.cookie保存在客户浏览器中,session保存在服务器中.
5.对于有大量客户使用的网页,使用session时要慎重,可能占用很多服务器存储,导致iis服务崩溃.
5.设置
Response.Cookies.Append("aaa","111");
HttpContext.Session.Keys.Append("asd");
byte[] buffer = new byte[1024];
buffer=Encoding.UTF8.GetBytes("asdf");
string s = "asdfasad"+Guid.NewGuid();
HttpContext.Session.Set("asd", buffer);
return View();
读取
string s = Encoding.UTF8.GetString(HttpContext.Session.Get("asd"));
s = HttpContext.Request.Cookies["aaa"];
二.localstorage
localstorage 用作前端数据存储、跨页面传值,l以键值对的方式存储。localstorage 是前端window 的属性,通常使用JavaScript进行操作
。
!!! localstorage 只能存储字符串
window.localstorage.setitem("key","value");
window.localstorage["key"]="value";
window.localstorage.key="value";
window.localstorage.getitem("key");
window.localstorage["key"];
window.localstorage.removeItem("key");
delete localstorage.key;
delete localstorage["key"];
localstorage.clear();