HTTP—软件测试专项技术(6)

发表于:2020-4-26 13:26

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:51Testing教研团队    来源:51Testing软件测试网原创

分享:
  4.会话与Cookie
  由于HTTP属于无状态协议,因此这也就意味着服务器无法记住客户端的各种状态。当服务器记不住状态时会发生什么事情呢?不妨以系统登录功能为例来说明记不住客户端状态时的状况。客户端与服务器端都是在需要时才建立连接的,而一旦不需要连接或者达到超时时间,连接将自动断开。因为HTTP无法保存客户端状态,所以服务器将无法知道某个客户端是否已经登录。此时,服务器会提醒客户端需要登录才能做某件事情,如在论坛中需要登录才可以发帖和回帖。在无状态时服务器将会一直提醒客户端要先登录。当登录成功并试图发帖时,服务器又会继续提醒我们需要先登录。可以想象,如果真是这样,我们将什么也做不了,每次都在做一件事情:输入用户名和密码以登录。很显然,这样的HTTP没有任何实用价值,那么如何解决这个问题呢?答案就是使用会话和Cookie。
  会话和Cookie的实质是相同的,差别主要表现在,会话保存在服务器端,而Cookie保存在客户端,可以认为会话是Cookie的一种特殊形式,如图1-28所示。
  
图1-28  会话和Cookie
  1)Cookie简介
  Cookie就是服务器暂存在用户计算机上的一些信息,目的是让服务器辨认出用户的计算机。
  当用户在浏览网站的时候,Web服务器会先将一小段信息发送到用户的计算机,这一小段信息就是Cookie,它会把用户在网站上输入的文字、一些选择或操作步骤都记录下来。当该用户再次浏览同一个网站中不同的网页时,Web服务器会先看看它的网页中有没有上次留下的Cookie资料。若有的话,则就会依据Cookie里的内容来判断使用者,返回特定的网页内容给用户。
  在保持用户信息和维护浏览器状态方面,Cookie是一种不错的方法。Cookie也可以保存用户的登录信息,如用户名和密码。每一个网页都可以使用保存在Cookie中的用户名和密码,从而避免了在每个页面中都必须输入用户名和密码,这也正是状态管理的关键。
  当然,也可以使浏览器拒绝存放Cookie到用户的计算机。首先,在IE的菜单栏上依次选择"工具"→"Internet选项"命令,在打开的"Internet选项"对话框中选择"隐私"选项卡,移动滑块就可以设置是否关闭Cookie(见图1-29),设置后重新启动浏览器即可生效。
  当用户关闭Cookie之后,很多网站的个性化服务功能很可能也不能再使用了,因此应该仔细考虑是否关闭这个功能。对于应用Cookie的应用程序来说,在应用时检测浏览器是否支持Cookie是必需的工作。
  
图1-29  移动滑块,设置是否关闭Cookie
  在Windows操作系统中,IE浏览器将Cookie信息存放在Temporary Internet Files文件夹中。
  在IE的菜单栏中依次选择"工具"→"Internet选项"命令,在打开的"Internet选项"对话框中选择"常规"选项卡。单击"设置"按钮,在打开的"网站数据设置"对话框中单击"查看文件"按钮(见图1-30(a)),就可以打开"Temporary Internet Files"文件夹。在打开的文件夹中,可以看到很多以"cookie:"开头的文件,这些便是存放Cookie的文件,如图1-30(b)所示。它们实际存放的位置目录(user name是用户的登录名)是C:\AppData\Local\Microsoft\Windows\Temporary Internet Files。
  
(a)
  
(b)
图1-30  存放Cookie的文件
  Cookie文件是文本文件,双击Cookie文件,默认会使用"记事本"程序打开它。
  用户可以直接删除这些Cookie文件或者利用"Internet选项"对话框中的"删除"按钮来清除Cookie。
  2)会话简介
  会话即客户端与服务器端的会话。当访问者浏览网站的时候,一个会话就开始了,当他离开的时候,会话就结束了。
  当访问者浏览网站的时候,网站服务器会给该访问者一个ID,当他离开的时候(也就是关闭浏览器的时候),删除这个ID。
  从本质上来说,Cookie和客户端浏览器是有关系的,而会话变量可以将一些变量存放在服务器中。
  会话针对的是某个用户的浏览器以及通过当前浏览器窗口打开的任何窗口,它是存储特定用户信息的机制。
  而Cookie则没有这样强的针对性,它可以在客户端存放很长时间(只要用户愿意),关闭浏览器后,再次启动浏览器还可以使用它。
  因为会话的标识是通过Cookie来传递的,但是又不保存Cookie,所以会话有时也称为不保存的Cookie或者临时Cookie。
  类似地,会话也由服务器端生成,并将相应变量保存在服务器端。同时会为访问该服务器端的客户端生成一个会话ID,该会话ID有点类似于服务器端为客户端分配的一个身份标识。会话ID将通过响应的方式传递给客户端(在响应的Set-Cookie字段中),客户端一旦接收到了某个会话ID,那么在后续的请求中将该会话ID值包含在Cookie字段中并回传给服务器端,这样服务器端就可以对客户端的身份进行验证了,如图1-31所示。
  
图1-31  服务器端可以对客户端的身份进行验证
  5.HttpWatch的功能介绍
  前面已经介绍了HttpWatch中Stream选项卡的内容,下面将会介绍一些功能和其他几个重要页面的含义。
  1)缓存清空
  浏览器默认是支持缓存的。如果在登录之前没有清空缓存,那么某次访问可能直接从浏览器缓存中读取,而不会真正地将请求发送给服务器,这样就不会录制任何数据包。在这种情况下,在HttpWatch主界面中依次选择菜单栏中的Tools→Clear Cache and All Cookies,可以将所有缓存和Cookie数据清空,如图1-32所示。
 
图1-32  将所有缓存和Cookie数据清空
  2)Overview选项卡
  这里仍以访问 http://172.21.200.189/oscommerce/index.php站点为例进行说明,录制的内容如图1-33所示。
  
图1-33  以访问相关站点为例录制的内容
  Overview选项卡中各个字段的含义见表1-6。
  3)Time Chart选项卡
  Time Chart选项卡以直观的线条显示了各部分的耗时情况,其中左侧窗口显示了对应URL的总体耗时情况,右侧窗口针对左侧窗口给出了Blocked(阻塞)、Send(发送请求)、Wait(等待服务器响应)、Receive(接收响应)、TTFB(Time To First Byte,首字节返回)和Network(网络)的耗时情况,如图1-34所示。
  图1-34  耗时情况
  图1-34中Timing列中各字段的含义见表1-7。
  
  4)Headers选项卡
  Headers选项卡中列出了发送请求头和返回请求头的相关内容,如图1-35所示。
图1-35  发送请求头和返回请求头的相关内容
  图1-35中Headers Sent列中部分字段的含义见表1-8。
 
  Host 主要用于指定被请求资源的网络主机和端口号。它通常从HTTP URL中提取出来,在浏览器中输入。浏览器发送的请求消息中包含Host字段,例如,Host设置为bbs.51Testing.com:n。此处使用默认端口号80。若指定了端口号为8080,则Host设置为bbs.51Testing.com:8080
  User-Agent 允许客户端将它的操作系统、浏览器和其他属性告诉服务器
  DNT 表示"禁止追踪"(Do Not Track),其有3个值:1代表用户不想被第三方网站追踪,0代表接受追踪,null代表用户不置可否
  图1-35中Headers Received列中部分字段的含义见表1-9。

查看《软件测试专项技术--基于Web、移动应用和微信》全部连载内容>>
版权声明:51Testing软件测试网获得人民邮电出版社和作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。
22/2<12
精选软件测试好文,快来阅读吧~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号