乐趣区

关于cookie:response中的setcookie和request中的cookie

  • 只有客户端能力设置 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 的每个属性解释如下:

  1. Customer=huangxp 一个 ” 名称=值 ” 对,把名称 customer 设置为值 ”huangxp”,这个属性在 Cookie 中必须有。
  2. path=/foo 管制哪些拜访可能触发 cookie 的发送。如果没有指定 path,cookie 会在所有对此站点的 HTTP 传送时发送。如果 path=/directory,只有拜访 /directory 上面的网页时,cookie 才被发送。在这个例子中,用户在拜访目录 /foo 下的内容时,浏览器将发送此 cookie。如果指定了 path,然而 path 与以后拜访的 url 不符,则此 cookie 将被疏忽。
  3. domain=.ibm.com 指定 cookie 被发送到哪台计算机上。失常状况下,cookie 只被送回最后向用户发送 cookie 的计算机。在这个例子中,cookie 会被发送到任何在.ibm.com 域中的主机。如果 domain 被设为空,domain 就被设置为和提供 cookie 的 Web 服务器雷同。如果 domain 不为空,并且它的值又和提供 cookie 的 Web 服务器域名不符,这个 Cookie 将被疏忽。
  4. expires= Wednesday, 19-OCT-05 23:12:40 GMT 指定 cookie 生效的工夫。如果没有指定生效工夫,这个 cookie 就不会被写入计算机的硬盘上,并且只继续到这次会话完结。
  5. 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
退出移动版