HTTP头中Set-Cookie选项的解释

    我们在一些留言本、BBS讨论区发贴时常会出现这种现象:当进入发贴界面时,在要求填写用户名和密码的地方就已经自动地填上了你的资料,这是怎么回事呢?这是因为程序中引入了COOKIE技术的缘故。原来在你第一次登录时,程序就已在你的电脑中安装了一个COOKIE信息包,在你今后登陆时电脑就自动检索你的COOKIE并取出信息包的信息供程序调用,所以出现上面所述的现象。

    COOKIE只不过是CGI程序要求浏览器持有的一个信息包,这个信息包可以由CGI程序在任何时候收回。每当CGI程序要求创建COOKIE 时,COOKIE可以从服务器传送到浏览器所属的子目录下(通常是保存在C:\WINDOWS\Temporary Internet Files的目录下,这个过程称为COOKIE的安装。

    COOKIE的安装和读出通常都由一个CGI模块来完成,下面我就将此模块的原代码公布给大家,有了这个COOKIE模块我们在编写程序时如要应用COOKIE技术可以说易如反掌。

COOKIE的语法:

HTTP Cookie的发送是通过http头部来实现的,他早于文件的传递,头部Set-Cookie的语法如下:

 
  
  1. Set-cookie:name=name;expires=date;path=path;domain=domain;secure 
  2. name=name // 需要设置cookie的值(name不能使用";"和","号),有多个name值时用";"分隔例如:name1=name1;name2=name2;name3=name3 
  3. expires=date //cookie的有效期限,格式为:expires="Wdy,DD-Mon-YYYY HH:MM:SS"  
  4. path=path //设置cookie支持的路径,如果path是一个路径,则cookie对这个目录下的所有文件及子目录生效,例如:path="/cgi-bin/",如果path是一个文件,则cookie指对这个文件生效,例如:path="/cgi-bin/cookie.cgi" 
  5. domaindomain=domain //对cookie生效的域名,例如:domain="gzdzw.51.net" 
  6. secure //如果给出此标志,表示cookie只能通过SSL协议的https服务器来传递,cookie的接收是通过设置环境变量HTTP_COOKIE来实现的,CGI程序可以通过检索该变量获取cookie信息