Java:cookie和session区别与原理
Posted 流楚丶格念
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java:cookie和session区别与原理相关的知识,希望对你有一定的参考价值。
文章目录
概念
cookie
参考之前的博文:https://blog.csdn.net/weixin_45525272/article/details/117912761
session
参考之前的博文:https://blog.csdn.net/weixin_45525272/article/details/117914643
区别
-
存储位置不同:cookie存放于客户端;session存放于服务端。
-
存储容量不同:单个cookie保存的数据<=4KB,一个站点最多保存20个cookie;而session并没有
上限。 -
存储方式不同:cookie只能保存ASCII字符串,并需要通过编码当时存储为Unicode字符或者二进
制数据;session中能够存储任何类型的数据,例如字符串、整数、集合等。 -
隐私策略不同:cookie对客户端是可见的,别有用心的人可以分析存放在本地的cookie并进行
cookie欺骗,所以它是不安全的;session存储在服务器上,对客户端是透明的,不存在敏感信息
泄露的风险。 -
生命周期不同:可以通过设置cookie的属性,达到cookie长期有效的效果;session依赖于名为
JSESSIONID的cookie,而该cookie的默认过期时间为-1,只需关闭窗口该session就会失效,因此
session不能长期有效。 -
服务器压力不同:cookie保存在客户端,不占用服务器资源;session保管在服务器上,每个用户
都会产生一个session,如果并发量大的话,则会消耗大量的服务器内存。 -
浏览器支持不同:cookie是需要浏览器支持的,如果客户端禁用了cookie,则会话跟踪就会失
效;运用session就需要使用URL重写的方式,所有用到session的URL都要进行重写,否则
session会话跟踪也会失效。 -
跨域支持不同:cookie支持跨域访问,session不支持跨域访问。
应用场景
- 对于敏感数据,应存放在session里,因为cookie不安全。
- 对于普通数据,优先考虑存放在cookie里,这样会减少对服务器资源的占用。
工作原理
cookie工作原理
Cookie意为“甜饼”,是由W3C组织提出,最早由Netscape社区发展的一种机制。目前Cookie已经成为标准,所有的主流浏览器如IE、Netscape、Firefox、Opera等都支持Cookie。
由于HTTP是一种无状态的协议,服务器单从网络连接上无从知道客户身份。怎么办呢?就给客户端们颁发一个通行证吧,每人一个,无论谁访问都必须携带自己通行证。这样服务器就能从通行证上确认客户身份了。这就是Cookie的工作原理。
Cookie实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。服务器还可以根据需要修改Cookie的内容。
session工作原理
而 session是依赖于cookie的。
当客户端首次访问服务器时,服务器会为其创建一个session对象,该对象具有一个唯一标识SESSIONID。并且在响应阶段,服务器会创建一个cookie,并将SESSIONID存入其中。客户端通过响应的cookie而持有SESSIONID,所以当它再次访问服务器时,会通过cookie携带这个SESSIONID。服务器获取到SESSIONID后,就可以找到与之对应的session对象,进而从这个session中获取该客户端的状态。
以上是关于Java:cookie和session区别与原理的主要内容,如果未能解决你的问题,请参考以下文章