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

区别

  1. 存储位置不同:cookie存放于客户端;session存放于服务端。

  2. 存储容量不同:单个cookie保存的数据<=4KB,一个站点最多保存20个cookie;而session并没有
    上限。

  3. 存储方式不同:cookie只能保存ASCII字符串,并需要通过编码当时存储为Unicode字符或者二进
    制数据;session中能够存储任何类型的数据,例如字符串、整数、集合等。

  4. 隐私策略不同:cookie对客户端是可见的,别有用心的人可以分析存放在本地的cookie并进行
    cookie欺骗,所以它是不安全的;session存储在服务器上,对客户端是透明的,不存在敏感信息
    泄露的风险。

  5. 生命周期不同:可以通过设置cookie的属性,达到cookie长期有效的效果;session依赖于名为
    JSESSIONID的cookie,而该cookie的默认过期时间为-1只需关闭窗口该session就会失效,因此
    session不能长期有效

  6. 服务器压力不同:cookie保存在客户端,不占用服务器资源;session保管在服务器上,每个用户
    都会产生一个session,如果并发量大的话,则会消耗大量的服务器内存。

  7. 浏览器支持不同:cookie是需要浏览器支持的,如果客户端禁用了cookie,则会话跟踪就会失
    效;运用session就需要使用URL重写的方式,所有用到session的URL都要进行重写,否则
    session会话跟踪也会失效。

  8. 跨域支持不同: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区别与原理的主要内容,如果未能解决你的问题,请参考以下文章

java web Session会话技术(原理图解+功能+与Cookie的区别+基本使用)

Session, Token和Cookie的区别

Cookie和Session的区别与联系

java中session和cookie区别

正确理解cookie和session机制原理

cookie与session的区别与联系