Cookie and Session
cookie和session的区别
cookie和session有众多的联系,面试,日常开发中也经常用到,写下来记录一下。
cookie的前身
Http协议本身是没有状态的,客户端向服务器请求下载资源,每一次请求都是独立的,客户端和服务器都没有必要去记录彼此的行为。
后来人们发现若是能生成一些按照人们需求的动态信息,则web会更有用,于是HTML添加了表单,下拉框,脚本等等,另外在服务器端也出现了CGI规范,用来响应客户端动态信息。
cookie的作用
其实cookie是解决Http协议没有状态而做的改变,session则是为了解决客户端与服务器之间保持状态的办法。
cookies是作为Http创术的信息头的一般法发给客服端的,服务器通过在Http响应头上添加一段特殊的指示,用来提示浏览器按照指示生成相应的cookie.
cookie的使用是由浏览器按照一定的原则后台发送给服务器,浏览器检查所有储存的cookie,如果某个cookie所声明的作用范围大于或者等于精要请求的资源,所在的位置,则把该cookie附在请求资源的http请求头上发给服务器。
默认情况下,如果在某个页面创建了一个cookie,那么该页面所在目录中的其他页面也可以访问该cookie。如果这个目录下还有子目录,则在子目录中也可以访问。
语法如下: document.cookie=“name=value; path=cookieDir”; 其中cookieDir表示可访问cookie的目录。
例如: document.cookie=“userId=320; path=/shop”; 就表示当前cookie仅能在shop目录下使用。 如果要使cookie在整个网站下可用,可以将cookie_dir指定为根目录,例如: document.cookie=“userId=320; path=/”;
cookie 和session的区别
1、储存位置不同
具体来说cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案。
2、储存容量不同
单个cookie保存的数据不超过4KB,一个站点最多保存20个Cookie。
对于session来说并没有上限,但出于对服务器端的性能考虑,session内不要存放过多的东西,并且设置session删除机制 。
3、储存方式不同
cookie中智能储存ASCII字符串,并需要通过编码方式存储为Unicode字符或者二进制数据。
ession中能够存储任何类型的数据。
4、隐私策略不同
cookie对客户端是可见的,别有用心的人可以分析存放在本地的cookie并进行cookie欺骗,所以它是不安全的。
session存储在服务器上,对客户端是透明的,不存在敏感信息泄漏的风险,相对安全。
5、有效期不同
可以通过设置cookie的属性,达到使cookie长期有效的效果。
ession依赖于名为JSESSIONID的cookie,而cookie JSESSIONID的过期时间默认为-1,只需关闭窗口该session就会失效,因而session不能达到长期有效的效果。
6、服务器压力不同
cookie保管在客户端,不占用服务器资源。对于并发用户十分多的网站,cookie是很好的选择。
session是保管在服务器端的,每个用户都会产生一个session。假如并发访问的用户十分多,会产生十分多的session,耗费大量的内存。
7、作用域不同
cookie既能够设为本浏览器窗口以及子窗口内有效,也能够设为一切窗口内有效。
session只能在本窗口以及子窗口内有效。
8、跨域名访问
cookie支持跨域名访问。
session不支持跨域名访问。
感谢
感谢简书的小喜_ww和iteye的uule的两位博主,本篇总结多有借鉴,但仅供学习之用,冒犯之处多多见谅,谢谢!