• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

Cookie的使用来弥补http的缺陷

发布: 2007-6-23 19:14 | 作者:   | 来源:   | 查看: 11次 | 进入软件测试论坛讨论

领测软件测试网

   
  HTTP协议是非常强大的。不过,它有一个缺陷就是不记忆状态。这意味着,当一次HTTP会话结束后,不管是客户还是服务器,都不记忆刚刚发生的会话。这有可能导致一些麻烦,因为服务器无法知道一些重要的事情,诸如口令、发给客户的纪录等。 
  

  HTTP协议提供了一个基本方法可以让客户的机器中保存一些信息,这样,服务器就可以从中知道上一次HTTP会话的的情况,这就是所谓的Cookie。  Cookie实际是一个字符串,它的格式是 CookieName=CookieValue。Cookie中不应该有分号或逗号。客户可以拒绝Cookie,所以任何一个Web应用程序不能认为客户的机器肯定有Cookie。察看Cookie的情况可以在WindowsCookies中找。  在Delphi中管理Cookie是一件非常容易的事。
  
  THTTPRequest和THTTPResponse都封装了用来处理Cookie的特性和方法,允许您控制怎样读写Cookie。  要设置Cookie的内容,您可以调用TWebResponse的SetCookieField的方法。这个方法需要传递一个TStrings对象作为Cookie的内容以及这个Cookie的限制条件。
  SetCookieField()方法是这样声明的:  procedure SetCookieField(Values:TStrings;const ADomain,APath:string;AExpires:TDateTime;ASecure:Boolean);Values参数是一个TStrings对象(也可以使用TStringList对象),用于指定Cookie的实际内容。Values中可以包含多个Cookie。ADomain 参数用于限制服务器的域,Cookie只对特定域的服务器是有效的。如果这个参数为空,Cookie将被传递给任何一个服务器。一般情况下,应当把这个参数设为Web服务器的域名。
  APath参数用于指定一组路径,Cookie只在特定的路径下是合法的。AExpires参数用于指定Cookie在多长时间内是合法的,由于时差的原因,这个时间应当基于GMT时区。如果您想使Cookie的有效时间是10天,就应当把这个参数设为Now+10。如果要使一个Cookie无效,这个参数可以设为过去的一个时间。注意,一个Cookie无效后,就不会被传递给服务器,但并不从客户机中删除。ASecure参数是一个boolean值,如果这个参数设为True,表示Cookie只能通过HTTP或SSL传递。一般情况,这个参数设为False。 
   在Web服务器端,您可以通过TWebRequest的CookieFields特性访问由客户传递来的Cookie。这个特性是一个TStrings对象,每个Cookie的格式是param=value。调用TWebRequest的ExtractCookieFields()方法可以把多个Cookie分解为一个个字符串。  Cookie可以保存任何字符串所能表达的信息。Cookie的长度最多可达4KB,客户的机器最多可以保存300个Cookie.每个服务器或域的Cookie不超过20个。下面举一个例子说明Cookie的应用:var
  CookList : TStringList;
  iBZ,fcbz:integer; begin
  CookList := TStringList.Create;
  try
  CookList.Add('NSRID='+ sNSRID);
  CookList.Add('NSRMC=' + sNSRMC);
  CookList.Add('WJBM=' + sWJBM);
  CookList.Add('YHZH=' + sYHZH);
  iBZ:=0;
  fcbz:=0;
  CookList.Add('BZ=' + IntToStr(iBZ));
  CookList.Add('FCBZ=' + IntToStr(fcbz));
  Response.SetCookieField(cookList,'','',Now+10,False);
  finally
  cookList.Free;
  End;
  End;//创建Cookie  iBZ:=StrToInt(Request.CookieFields.Values['BZ']);//使用Cookie

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网