一、什么是cookie
cookie由服务端生成,发送给user_Agent(一般是浏览器,服务器告诉浏览器设置一下cookie),浏览器会将cookie以key=value的形式保存到某个目录的文本文件内,下次请求同样网站时就发送该cookie给服务器(前提是浏览器设置为启用cookie)cookie通过HTTP请求报文和响应报文配合完成。
cookie是浏览器提供的一种机制,可以由js对其进行控制,而不是js本质的性质
cookie的不可跨域名性
cookie是存在于用户硬盘的一个文件,这个文件通常对应于一个域名。cookie可以跨域同一个域名下的多个网页,但不能跨越多个域名使用。
cookie的缺点
1、cookie体积过大会造成请求和响应速度变慢。
2、默认浏览器会把任何请求都把cookie带上去,哪怕是静态资源。
3、cookie可以在前后端修改,数据容易篡改或伪造。
4、cookie对于敏感数据的保护基本是无效的。
5、有些用户是禁用掉cookie的
二、什么是session
web应用程序中还经常使用session来记录客户端的登录状态。不同于客户端,session保存在服务器上。session相当于程序在服务上建立一份客户档案,客户来访时只需要查询客户档案表就可以了。
三、cookie和session的区别
- cookie数据存放在客户端,session数据存放在服务器。
- cookie保存的字符串,session保存的是对象。
- cookie不是很安全,别人可以分析存在本地的cookie并进行cookie欺骗,考虑安全,应当使用session
- session会在一定时间内保存在服务上,当访问增多,会比较占用服务器的性能,考虑到减轻服务器性能方面,应当使用cookie
- 单个cookie保存数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie
四、webStorage
webStorage是H5提出的新规范,包括localStorage和sessionStorage.
localStorage: 本地存储,是永久是,除非手动删除
sessionStorage: 会话存储,会话结束,就没有了
五、cookie与webStorage的区别
1、webStoarge的存储空间更多大,有5M,而cookie只有4K
2、webStorage并不作为HTTP Header发送到服务器,所以相对安全
3、cookie可以与服务端通信,而webStorage只保存在客户端,不参与服务端通信。