Cookie和Session的区别 -计算机网络复习笔记

Cookie和Session的区别 -计算机网络复习笔记

为什么要有Cookie和Session?

HTTP是一种无状态的协议,为了分辨链接是谁发起的,Cookie和Session就是来解决这一问题的方法和机制。不然有些情况下即使是同一个网站每打开一个子页面也都要需要用户重新登录一下。

Cookie (储存在用户本地终端上的数据)

Cookie,类型为“小型文本文件”,是某些网站为了辨别用户身份,进行Session跟踪而储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存的信息。
简单来讲,是用户在访问某个网站后在本地储存的某些关于此网站的必要相关信息(通常是一小段文本),并跟随浏览器的每一个请求发送给同一个服务器,是客户端保持状态的方案。

Cookie的组成: Cookie是一段不超过4KB的小型文本数据,由一个名称(Name)、一个值(Value)和其它几个用于控制Cookie有效期、安全性、使用范围的可选属性组成。

Session

Session:在计算机中,尤其是在网络应用中,称为“会话控制”。Session对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的Web页之间跳转时,存储在Session对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。他是存在服务器的一种用来存放用户数据的类HashTable结构。

当用户请求来自应用程序的 Web页时,如果该用户还没有会话,则Web服务器将自动创建一个 Session对象。当会话过期或被放弃后,服务器将终止该会话。Session 对象最常见的一个用法就是存储用户的首选项。例如,如果用户指明不喜欢查看图形,就可以将该信息存储在Session对象中。

使用过程:浏览器第一次发送请求时,服务器自动生成了一HashTable和一Session ID来唯一标识这个HashTable,并将其通过响应发送到浏览器。浏览器第二次发送请求会将前一次服务器响应中的Session ID放在请求中一并发送到服务器上,服务器从请求中提取出Session ID,并和保存的所有Session ID进行对比,找到这个用户对应的HashTable。

只要页面有提交活动,则Session的所有项都会保持,页面在20分钟(默认配置)内没有任何提交活动时Session会失效。Session内存储的多个数据项是整体失效的。

当用户在应用程序的 Web页间跳转时,存储在 Session 对象中的变量不会丢失而是在整个用户会话中一直存在下去。
Session的实现方式和Cookie有一定关系。建立一个连接就生成一个session id,打开几个页面就好几个了,这里就用到了Cookie,把session id存在Cookie中,每次访问的时候将Session id带过去就可以识别了.

对于值类型的变量,Session中保存的是值类型的拷贝

对于引用类型的变量,Session中保存的是引用

Cookie和Session的区别

携带的数据类型方面:session 能够存储任意的 java 对象,Cookie 只能储存String类型的key/value对象,因为他是要在Http头部字段(header)中被传递的。

Cookie存储在客户端,而Session存储在服务器端。

Session过多时会十分消耗服务器资源的,所以某些大型网站会有专门的Session服务器。

域的支持范围不一样,比方说a.com的Cookie在a.com下都能用,而www.a.com的Session在api.a.com下都不能用,解决这个问题的办法是JSONP或者跨域资源共享

Session的Cookie依赖性

实际上客户端的Session信息是存储在Cookie中的,如果客户端完全禁用掉了Cookie功能,他也就不能享受到了Session提供的功能了。

单点登录中,cookie 被禁用了怎么办?

单点登录的原理是后端生成一个 session ID,设置到 cookie,后面所有请求浏览器都会带上cookie,然后服务端从cookie获取 session ID,查询到用户信息。所以,保持登录的关键不是cookie,而是通过cookie 保存和传输的 session ID,本质是能获取用户信息的数据。除了cookie,还常用 HTTP 请求头来传输。但这个请求头浏览器不会像cookie一样自动携带,需手工处理。

参考文章:https://blog.csdn.net/liyifan687/article/details/80077928?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522160424506319724836727839%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=160424506319724836727839&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_v2~rank_v28-1-80077928.pc_search_result_cache&utm_term=cookie%E5%92%8Csession%E5%8C%BA%E5%88%AB&spm=1018.2118.3001.4449

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值