在线客服
扫描二维码
下载博学谷APP扫描二维码
关注博学谷微信公众号
众所周知,cookie和session的相同点是他们都是用来跟踪浏览器用户身份的会话方式,但是两者的不同之处也不少。在测试面试中,我们常常会遇到这样的经典面试题:描述一下cookie和session的区别。下面我们就一起来复习一下相关的知识点!
区别1:
Session 代表着服务器和客户端一次会话的过程。Session 对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当客户端关闭会话,或者 Session 超时失效时会话结束。
由于HTTP协议是无状态的协议,所以服务端需要记录用户的状态时,就需要用某种机制来识别具体的用户,这个机制就是Session,典型的场景比如购物车,当你点击下单按钮时,由于HTTP协议无状态,所以并不知道是哪个用户操作的,所以服务端要为特定的用户创建了特定的Session,用于标识这个用户,并且跟踪用户,这样才知道购物车里面有几本书。这个Session是保存在服务端的,有一个唯一标识。在服务端保存Session的方法很多,内存、数据库、文件都有。
集群的时候也要考虑Session的转移,在大型的网站,一般会有专门的Session服务器集群,用来保存用户会话,这个时候 Session 信息都是放在内存的,使用一些缓存服务比如Memcached之类的来放 Session。
区别2:
思考一下服务端如何识别特定的客户?这个时候Cookie就登场了。每次HTTP请求的时候,客户端都会发送相应的Cookie信息到服务端。实际上大多数的应用都是用 Cookie 来实现Session跟踪的,第一次创建Session的时候,服务端会在HTTP协议中告诉客户端,需要在 Cookie 里面记录一个Session ID,以后每次请求把这个会话ID发送到服务器,我就知道你是谁了。
有人问,如果客户端的浏览器禁用了 Cookie 怎么办?一般这种情况下,会使用一种叫做URL重写的技术来进行会话跟踪,即每次HTTP交互,URL后面都会被附加上一个诸如 sid=xxxxx 这样的参数,服务端据此来识别用户。
区别3:
思考一下服务端如何识别特定的客户?这个时候Cookie其实还可以用在一些方便用户的场景下,设想你某次登陆过一个网站,下次登录的时候不想再次输入账号了,怎么办?这个信息可以写到Cookie里面,访问网站的时候,网站页面的脚本可以读取这个信息,就自动帮你把用户名给填了,能够方便一下用户。这也是Cookie名称的由来,给用户的一点甜头。
总结一下cookie和session的区别:
(1)作用范围不同,Cookie 保存在客户端(浏览器),Session 保存在服务器端。
(2)存取方式的不同,Cookie 只能保存 ASCII,Session 可以存任意数据类型,一般情况下我们可以在 Session 中保持一些常用变量信息,比如说 UserId 等。
(3)有效期不同,Cookie 可设置为长时间保持,比如我们经常使用的默认登录功能,Session 一般失效时间较短,客户端关闭或者 Session 超时都会失效。
(4)隐私策略不同,Cookie 存储在客户端,比较容易遭到不法获取,早期有人将用户的登录名和密码存储在 Cookie 中导致信息被窃取;Session 存储在服务端,安全性相对 Cookie 要好一些。
(5)存储大小不同, 单个 Cookie 保存的数据不能超过 4K,Session 可存储数据远高于 Cookie。
以上就是关于测试面试题cookie和session的区别的全部解答,还没弄清楚的小伙伴可以把文章收藏起来慢慢消化。
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
软件测试工程师必须了解的七大原则
之前有同学问我,软件测试的工作是不是只要将技术学习扎实,不需要过多的学习理论就可以职场上一马平川呢?其实并不是这样的。无论是哪个行业哪个岗位,仅仅懂得技术只能胜任执行的工作。更多的需要掌握这项工作的原理理论以及思维模式。尤其软件测试行业,建立良好的测试思维以及测试理论是非常有必要的。下面我就和大家一起分享一下关于测试思维中七大原则:
8764
2019-08-07 18:11:25
如何开展兼容性测试?兼容性测试有什么作用?
兼容性测试是指测试软件在特定的硬件平台上、不同的应用软件之间、不同的操作系统平台上、不同的网络等环境中是否能够很友好的运行的测试。兼容性测试是软件测试过程中必不可少的一个过程,没有兼容性测试的测试是不完整的测试,下面来分享怎么做兼容测试,希望能对大家有所帮助。
7735
2019-07-02 16:49:44
软件测试面试题汇总:测试计划(1)
随着移动互联网的发展,软件测试求职者越来越多,针对许多同学的需求,我们来复习一下有关测试计划的知识点。测试计划是软件测试面试的常见问题,也是同学们必须掌握的基础知识。
7709
2019-07-03 10:53:10
没经验可以做黑盒测试吗?做黑盒测试需要学什么?
没经验可以做黑盒测试吗?黑盒测试需要会什么?首先大家必须明白没经验不影响大家做黑盒测试,毕竟所有人的测试经验都是从无到有,所以缺乏经验也可以做黑盒测试。黑盒测试又叫功能测试,大家需要了解软件开发和测试模型、软件测试分类、测试用例设计、缺陷及SVN、测试流程等等内容。下面详细讲讲黑盒测试的具体内容。
7939
2019-10-30 16:49:39
软件生命周期阶段有几个?常见软件生命周期模型有哪些?
软件生命周期阶段及常见的软件生命周期模型,软件生命周期是指一个计算机软件从功能确定、设计,到开发 成功投入使用,并在使用中不断地修改、增补和完善,直到停止该软件的使用的全过程。生命周期从收到应用软件开始算起,到该软件不再使用为止。
8850
2020-04-02 16:20:57