- 只有客户端能力设置Cookie,服务端若想让客户端减少一个Cookie项,须要在应答时,在Http头部中,通过应用Set-Cookie,将要设置的Cookie项发送给客户端。这样客户端,在下次访问时,会带上该Cookie项。
- 依据Netscape cookie草案的形容,Cookie 是Web 服务器向用户的浏览器发送的一段ASCII码文本。一旦收到Cookie,浏览器会把Cookie的信息片断以"名/值"对(name-value pairs)的模式贮存保留在本地。这当前,每当向同一个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中必须有。
- path=/foo 管制哪些拜访可能触发cookie 的发送。如果没有指定path,cookie 会在所有对此站点的HTTP 传送时发送。如果path=/directory,只有拜访/directory 上面的网页时,cookie才被发送。在这个例子中,用户在拜访目录/foo下的内容时,浏览器将发送此cookie。如果指定了path,然而path与以后拜访的url不符,则此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.... 时,上面的HTTP 包头就被发送到远端的Web服务器。GET /foo/index.html HTTP/1.0 Cookie:customer=huangxp