Cookie和Session知识扫盲
测试工作中我们经常会听到这两个词,作为测试一定要理解这两个概念,对于测试应用的接口、业务理解很有帮助。
Cookie和Session的作用?
为什么会有这两个东西,首先明确一下HTTP协议的一个重要特点“无状态”,数据交换完成,服务端和客户端就断开连接了,所以请求之间没有相关联系,每一个请求都是一个独立的新请求,为了实现状态保留的,保证前后正常通信,需要在客户端或服务器端存储与会话相关的数据,所以设计了这两个机制。
Cookie的原理是什么?
Cookie中文称为“甜饼”,是由W3C组织提出的保存在客户端本地,方便下次访问服务端时直接放到请求报文头中,如登录的cookie,下次访问同一网站时,用户不必再次输入用户名和密码就已经直接登录,所有的主流浏览器如IE、Netscape、Firefox、Opera等都支持Cookie。
session原理什么?
Session保存在服务器上用来记录用户状态的机制。客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。这就是Session。Session在用户第一次访问服务器的时候自动创建。客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了。
一般客户端和服务端通过一个SessionID来进行沟通,为了防止不同的用户之间出现冲突和重复,SessionID一般是一个32或者48个字节的随机字符串。
cookie 和session 的区别:
-
存放位置不同:cookie数据存放在客户端(浏览器);session数据放在服务器端,一般存储在内存中,但是SessionID存储在客户端cookie中。
-
cookie由浏览器存储在本地,安全有风险,不宜存储敏感信息,如密码等。
-
session会在一定时间内保存在服务器上,访问较多时,影响服务器性能。
如何测试?
-
检查cookie是否按照设置时间保持。
-
刷新对cookie有什么影响。
-
删除cookie后应用的状态。
与token的关系?
有些网站的登录并不是采取cookie形式,而是用token,一般app的登录,都是用token来校验的,大家可以抓包一些软件验证一下