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.html 时,下面的HTTP 包头就被发送到远端的Web服务器。

 

 

      典型的网络浏览过程中浏览器如何识别和处理Cookie:

  • 浏览器对于Web服务器应答包头中Cookie的操作步骤:
    1. 从Web服务器的应答包头中提取所有的cookie。
    2. 解析这些cookie的组成部分(名称,值,路径等等)。
    3. 判定主机是否允许设置这些cookie。允许的话,则把这些Cookie存储在本地。 (与请求的url)
  • 浏览器对Web服务器请求包头中所有的Cookie进行筛选的步骤:
    1. 根据请求的URL和本地存储cookie的属性,判断那些Cookie能被发送给Web服务器。
    2. 对于多个cookie,判定发送的顺序。
    3. 把需要发送的Cookie加入到请求HTTP包头中一起发送。

      浏览器在接受某一个站点的Cookie的时候,需要检查Cookie的参数domain、path、secure,看是否与当前的站点和URL相符,如果不符的话,就会忽略。另一方面。浏览器在上传Cookie的时候,也会根据当前所访问站点的属性,上传相关的Cookie,而其他的Cookie则不予上传。

 

 

      Cookie规范对于一个浏览器同时能够存储的Cookie数量作出了规定。

  • 总共300 个cookie
  • 每个Cookie 4 K 的存储容量
  • 每一个domain 或者 server 20 个cookie。

     链接:http://www.ibm.com/developerworks/cn/java/j-cookie/

你可能感兴趣的:(javascript,工作,网络协议,浏览器,Web,IBM)