Cookie 与Session
cookie也叫HTTP Cookie,最初是客户端与服务器端进行会话使用的。
比如,会员登录,下次回访网站时无须登录了;
cookie由名/值对形式的文本组成:name=value。
完整格式为:
name=value; [expires=date]; [path=path];[domain=somewhere.com]; [secure]
中括号是可选,name=value是必选。
document.cookie = 'user=xiaoming'//写入
alert(document.cookie); //读取
expires=date 失效时间,如果没有声明,则为浏览器关闭后即失效。声明了失效时间,那么时间到期后方能失效。
path=path 访问路径,当设置了路径,那么只有设置的那个路径文件才可以访问cookie。
domain=domain 访问域名,用于限制只有设置的域名才可以访问,那么没有设置,会默认限制为创建cookie的域名。
secure 安全设置,指明必须通过安全的通信通道来传输(HTTPS)才能获取cookie。
document.cookie = “user=zeng;secure”;
cookie局限性
Cookie虽然在持久保存客户端用户数据提供了方便,分担了服务器存储的负担。但是还有很多局限性的。
第一:每个特定的域名下最多生成20个cookie(根据不同的浏览器有所区别)。
1.IE6或更低版本最多20个cookie
2.IE7和之后的版本最多可以50个cookie。IE7最初也只能20个,之后因被升级不定后增加了。
3.Firefox最多50个cookie
4.Opera最多30个cookie
5.Safari和Chrome没有做硬性限制。
为了更好的兼容性,所以按照最低的要求来,也就是最多不得超过20个cookie。当超过指定的 cookie时,浏览器会清理掉
早期的cookie。IE和Opera会清理近期最少使用的cookie,Firefox会随机清理cookie。
第二:cookie的最大大约为4096字节(4k),为了更好的兼容性,一般不能超过4095字节即可。
第三:cookie存储在客户端的文本文件,所以特别重要和敏感的数据是不建议保存在cookie的。比如银行卡号,用户密码
等
第四: cookie 会把数据发送到服务端 有些会造成不必要的带宽浪费
cookie 不适合大量数据的存储,因为它们由每个对服务器的请求来传递,这使得 cookie 速度很慢而且效率也不高。
Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。`
cookie 和session 的区别:
1、cookie数据存放在客户的浏览器上,session数据放在服务器上。
2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗
考虑到安全应当使用session。
3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
考虑到减轻服务器性能方面,应当使用COOKIE。
4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
5、所以个人建议:
将登陆信息等重要信息存放为SESSION
其他信息如果需要保留,可以放在COOKIE中
Web存储
localstorage
localStorage.setItem(‘name’, ‘小林’);
alert(localStorage.getItem(‘name’))
通过属性存储和获取
localStorage.book = ‘小林’;
alert(localStorage.book);
//删除存储
localStorage.removeItem(‘name’);
清除所有
localStorage.clear();
localStorage保存在缓存里,只有手工删除或者清理浏览器缓存方可失效。
sessionStorage
sessionStorage: session即会话的意思,在这里的session是指用户浏览某个网站时,从进入网站到关闭网站这个时间
段,session对象的有效期就只有这么长。
sessionStorage 方法针对一个 session 进行数据存储。当用户关闭浏览器窗口后,数据会被删除。
localStorage: 将数据保存在客户端硬件设备上,不管它是什么,意思就是下次打开计算机时候数据还在。
localStorage 方法存储的数据没有时间限制。第二天、第二周或下一年之后,数据依然可用。
两者区别就是一个作为临时保存,一个长期保存。