之前我们在Cookie 和Session是什么?已经说过Cookie 和Session,但是为了保证系列的完整性,我们决定重新说一遍,当然可能会有一些区别,建议先从Cookie 和Session是什么?开始看。

Cookie

Cookie 定义

Cookie,又称为“小甜饼”。类型为“小型文本文件”,指某些网站为了辨别用户身份而储存在用户本地终端(Client Side)上的数据(通常经过加密)。

为什么要使用Cookie?

   上文中我们已经介绍过HTTP相关知识,但是没有说HTTP是无状态协议,无状态意味着对于事务处理没有记忆能力。举个简单的例子,在典型的网上购物场景中,用户浏览了几个页面,买了一盒饼干和两瓶饮料。最后结帐时,由于HTTP的无状态性,不通过额外的手段,服务器并不知道用户到底买了什么,所以Cookie就是用来绕开HTTP的无状态性的“额外手段”之一。服务器可以设置或读取Cookies中包含信息,借此维护用户跟服务器会话中的状态。

虽然Cookie解决了HTTP无状态问题,但是从测试人员角度出发,笔者认为使用 Cookie还有以下几点缺陷:1. Cookie会被附加在每个HTTP请求中,所以无形中增加了流量。2. 由于在HTTP请求中的Cookie是明文传递的,所以安全性成问题,除非用HTTPS。3. Cookie的大小限制在4KB左右,对于复杂的存储需求来说是不够用的。

我们可以打开Chrom浏览器,地址栏输入chrome://settings/siteData,可以看到我们
Chrom浏览器已经帮我们储存了这么多Cookie。

我们在网上搜索一个关键词后,会发现在很多不同的网页广告栏位置都可能出现该关键字相关的内容。这种情况,很可能就是因为别人拿到了我们的Cookie,有了我们的Cookie,经过一系列的算法,别人就知道我们想要的内容,然后再进行推荐。

当然Cookie的优势和劣势可能远不止这些,关于Cookie的更多知识,可能还需要读者自己去了解,这里对Cookie只进行简单介绍。

Session

Session:在计算机中,尤其是在网络应用中,称为“会话控制”。Session 对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的 Web 页时,如果该用户还没有会话,则 Web 服务器将自动创建一个 Session 对象。当会话过期或被放弃后,服务器将终止该会话。

   简单来说,客户端浏览服务端的时候,服务端把客户端信息以某种形式记录在服务器上,这种记录就是Session。

Cookie与Session区别

Cookie、Session简单来说都是为了识别用户信息,关于在开发过程中是使用cookie还是session,还是根据需求进行出发。Cookie与Session有哪些区别,笔者估计读者在网上也都找出许多答案。这里不做过多阐述,笔者认为主要有以下三个方面:

  • 存储方式不同,Cookie可以存储在浏览器或者本地,session只能存在服务器
  • 时效不同
  • 服务器压力不同,因为Session是存储在服务器当中的,所以Session过多,耗费大量的内存,可能会对服务器产生压力


本章小结:在测试过程中,我们一定不会绕过HTTP相关概念。我们在做接口测试的时候,如果对HTTP的请求方法都不是很清楚,笔者认为接口测试无从谈起。一个优秀的接口测试人员,对HTTP、Cookie、Session、这些基础概念应该是要烂熟于心的。本章大多内容都摘自维基百科,过程中有删减,读者可以通过搜索引擎再丰富对这些基础概念的理解。

欢迎关注微信公众号:软件测试汪。软件测试交流群:809111560

20. Cookie 和 Session的更多相关文章

  1. Cookie和Session的总结

    1.开篇 在之前学习这一段的时候我一直有点没弄清楚,其实对Session这块的理解还可以,但是Cookie感觉始终还是欠缺点火候.之后的很长一段时间都基本上很少用Cookie了,渐渐的也淡忘了这一块的 ...

  2. java的会话管理:Cookie和Session

    java的会话管理:Cookie和Session 1.什么是会话 此处的是指客户端(浏览器)和服务端之间的数据传输.例如用户登录,购物车等 会话管理就是管理浏览器客户端和服务端之间会话过程产生的会话数 ...

  3. Cookie和Session的区别

    前言 HTTP是一种无状态的协议,为了分辨链接是谁发起的,就需要我们自己去解决这个问题.不然有些情况下即使是同一个网站我们每打开一个页面也都要登录一下.而Session和Cookie就是为解决这个问题 ...

  4. 【转】Cookie和Session区别和联系详解

    会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是Cookie与Session.Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端 ...

  5. 理解Cookie和Session机制(转)

    目录[-] Cookie机制 什么是Cookie 记录用户访问次数 Cookie的不可跨域名性 Unicode编码:保存中文 BASE64编码:保存二进制图片 设置Cookie的所有属性 Cookie ...

  6. cookie 和session 的区别详解

    这些都是基础知识,不过有必要做深入了解.先简单介绍一下. 二者的定义: 当你在浏览网站的时候,WEB 服务器会先送一小小资料放在你的计算机上,Cookie 会帮你在网站上所打的文字或是一些选择, 都纪 ...

  7. Cookie和Session的区别详解

    本文引用自:http://www.cnblogs.com/shiyangxt/archive/2008/10/07/1305506.html 二者的定义: 当你在浏览网站的时候,WEB 服务器会先送一 ...

  8. cookie、session与token

    一.详述概念 1.Cookie机制 cookie机制是采用在客户端保持状态的方案(cookie的作用就是为了解决HTTP协议无状态的缺陷所作的努力).cookie的使用是由浏览器按照一定的原则在后台自 ...

  9. cookie 和session 的区别:

    1.cookie数据存放在客户的浏览器上,session数据放在服务器上.2.cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗 考虑到安全应当使用session.3. ...

随机推荐

  1. mysql oracle sqlserver三种数据库count函数返回值不一样

    SQLQuery countSqlQuery = userDAO.createSQLQuery("select count(id) from fhcb_08_tbl_user"); ...

  2. Linux随笔 - Linux统计某文件夹下文件、文件夹的个数

    统计某文件夹下文件的个数 ls -l |grep "^-"|wc -l 统计某文件夹下目录的个数 ls -l |grep "^d"|wc -l 统计文件夹下文件 ...

  3. python字符串常用函数-大小写,删除空格,字符串切片

  4. servlet-获取web.xml配置的init-param参数

    1.web.xml配置的参数 <servlet> <servlet-name>firstServlet</servlet-name> <servlet-cla ...

  5. shell 中 比较 diff

    diff 可以用来比较文件和文件夹是否相同 比较文件 diff file1 file2 >/dev/null 比较文件夹 diff -rNaq dir1 dir2 >/dev/null - ...

  6. python学习笔记:try与except处理异常语句

    写代码的时候会遇到各种各样的异常,那么代码就不会继续往下走了.比如说10除以0是错误的,因为除数不能为零学会捕捉异常,在异常出现的时候我们要做什么操作. 本文中只做简单使用的讲解,详细使用方法可以参考 ...

  7. Advanved DataGrid using QTP

    Use the GetCellData(j,i) Function for Cell data and Use the GetRowData(j) Function for Row Data wher ...

  8. Python控制台输出带颜色方法

    书写格式,和相关说明如下: 举例: print('\033[0;32;40m欢迎使用学生选课系统\033[0m') try: num = int(input('请输入数字选择功能 :')) excep ...

  9. mac 支持rz sz

    安装 lrzsz brew install lrzsz 配置 iTerm2 安装完成后我们需要在 iTerm2 中使用的话,还需要一些配置 进入到 /usr/local/bin 目录下,下载两个脚本文 ...

  10. c# 自定义控件之 ComboBox

    winform 自带的 combobox 无法支持根据输入文本匹配列表中的项目,需要使用自定义控件. public class MyCombobox : ComboBox { //初始化数据项 pri ...