cookie
1. 服务器通过 Set-Cookie 响应头设置 Cookie
response.setHeader('set-cookie','key:value')
2.浏览器(前端)得到的响应头里的 cookie,之后每次请求都会带着cookie
cookie:id;
3. 服务器通过读取 Cookie 就知道登录用户的信息
request.header.cookie // 然后对比数据库验证用户信息
由于直接使用cookie, 会很容易的被用户伪造cookie,所以引出sessison来解决这个问题
cookie = new Cookie("cookiename","cookievalue");
//设置Cookie最大生存时间,以秒为单位,负数的话为浏览器进程,关闭浏览器Cookie消失
cookie.setMaxAge(3600);
//设置cookie过期时间为1个小时
cookie.setPath("/");
//设置路径,这个路径即该工程下都可以访问该cookie 如果不设置路径,那么只有设置该cookie路径及其子路径可以访问
response.addCookie(cookie);
// 将Cookie添加到Response中,使之生效
setCookie(name, "", -1);//删除一个cookie, 让 setCookie函数的第二个参数为空就会删除这个name coikie
sessions
1. 在服务器创建一个对象
sessions = []
sessionsID = Math.random*100000 //使用一个随机数当用户的sessionsID
sessions[sessionsID] = 用户信息 //把这个ID放入后台临时数据库(sessions对象)中
response.setHeader('set-cookie', sessionsID )
2.浏览器(前端)得到的响应头里的 cookie,之后每次请求都会带着cookie
cookie: sessionsID;
3. 服务器通过读取 Cookie 就知道登录用户的信息
request.header.cookie // 然后对比数据库验证用户信息
与直接使用cookie相比,用sessions随机数生成ID暴露给前端随机数,显得更加安全
localstorage
一个 Storage 可被用于访问当前远端( origin )的本地存储空间的对象.
LocalStorage 跟 HTTP 无关,localstorage永久有效,除非用户清理缓存,每个域名 localStorage 最大存储量为 5Mb 左右,
只有相同域名的页面才能互相读取 LocalStorage
具体的集中使用方法
localStorage.setItem('myCat', 'Tom'); //设置,为本地storage对象添加一个key,value.
var cat = localStorage.getItem("myCat");//读取localstorage对象的“ myCat ”的 value
localStorage.removeItem("myCat");//移除一个key及value
sessionstorage
与localstorage相同,唯一不同点是SessionStorage 在用户关闭页面(会话结束)后就失效。
Cache-Control
通过设置Cache-Control时间,让相同的url时浏览器会在这个时间内,阻断请求,利用缓存加载,达到性能优化目的。
//后端设置响应头
response.setHeader('Cache-Control','maxage-600') // 相同的url 600S内不请求
Expires
与Cache-Control功能一样,不同点是Cache-Control是设置多长时间后过期。Expires是直接设置一个过期的日期,格式为GMT
MD5
Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数.
ETag
//后端设置响应头
response.setHeader('ETag',md5)
//客户端收到响应头
//会有ETag: '当前文件MD5'
//同一个文件客户端下一次请求时会带上
IF-None-Math:"当前文件MD5"
//后端收到请求会进行对比MD5,如果相同代表不需要更新。
Cache-Control, Expires ,ETag的区别
Cache-Control, Expires是通过设置时间让浏览器阻断请求,ETag是没有阻断请求,是后端验证MD5是否改变来做出相应的响应。