完整的Set-Cookie 头

参考:http://blog.sina.com.cn/s/blog_70c4d9410100z3il.html

根据Netscape cookie草案的描述,Cookie 是Web服务器向用户的浏览器发送的一段ASCII码文本。一旦收到Cookie,浏览器会把Cookie的信息片断以"名/值"对(name-valuepairs)的形式储存保存在本地。这以后,每当向同一个Web 服务器请求一个新的文档时,Web浏览器都会发送之站点以前存储在本地的Cookie。创建Cookie的最初目的是想让Web服务器能够通过多个HTTP请求追踪客户。有些复杂的网络应用需要在不同的网页之间保持一致,它们需要这种会话状态的保持能力。
浏览器与Web服务器通过HTTP协议进行通讯,而Cookie就是保存在HTTP协议的请求或者应答头部(在HTTP协议中,数据包括两部分,一部分是头部,由一些名值对构成,用来描述要被传输数据的一些信息。一部分是主体(body),是真正的数据(如HTML页面等))进行传送的。
在HTML文档被发送之前,Web服务器通过传送HTTP 包头中的Set-Cookie 消息把一个cookie发送到用户的浏览器中。下面是一个遵循Netscape cookie草案的完整的Set-Cookie 头:

Set-Cookie:customer=huangxp; path=/foo;domain=.ibm.com; 
expires= Wednesday, 19-OCT-05 23:12:40 GMT; [secure]

 

Set-Cookie的每个属性解释如下:
Customer=huangxp一个"名称=值"对,把名称customer设置为值"huangxp",这个属性在Cookie中必须有。如果指定了名称,值为空( 如Customer=),则表示删除此cookie。
path=/foo 控制哪些访问能够触发cookie 的发送。如果没有指定path,cookie 会在所有对此站点的HTTP传送时发送。如果path=/directory,只有访问/directory下面的网页时,cookie才被发送。在这个例子中,用户在访问目录/foo下的内容时,浏览器将发送此cookie。如果指定了path,但是path与当前访问的url不符,则此cookie将被忽略。 

(经测试,如果清除一个cookie时没加path,那么再设置此cookie时不成功)
domain=.ibm.com 指定cookie被发送到哪台计算机上。正常情况下,cookie只被送回最初向用户发送cookie的计算机。在这个例子中,cookie 会被发送到任何在.ibm.com域中的主机。如果domain 被设为空,domain就被设置为和提供cookie 的Web服务器相同。如果domain不为空,并且它的值又和提供cookie的Web服务器域名不符,这个Cookie将被忽略。 
expires= Wednesday, 19-OCT-05 23:12:40 GMT 指定cookie失效的时间。如果没有指定失效时间,这个cookie就不会被写入计算机的硬盘上,并且只持续到这次会话结束。 
secure 如果secure 这个词被作为Set-Cookie 头的一部分,那么cookie只能通过安全通道传输(目前即SSL通道)。否则,浏览器将忽略此Cookie。 
一旦浏览器接收了cookie,这个cookie和对远端Web服务器的连续请求将一起被浏览器发送。例如 前一个cookie被存入浏览器并且浏览器试图请求 URL http://www.ibm.com/foo/index.html 时,下面的HTTP包头就被发送到远端的Web服务器。
GET /foo/index.html HTTP/1.0
Cookie:customer=huangxp

你可能感兴趣的:(网页)