参见http://yun.baidu.com/share/link?shareid=1575530779&uk=1795493794
cookie三元组(name,domain,path),它唯一确定一个cookie,三元组相同时,就是同一个cookie,不同时,就是不同的cookie,一般来说,
相同domain和path的cookie放在同一个文件中,并用*号隔开,当然,其实并不用关心存储方式,不同的浏览器存储方式也不一样。
cookie的访问有一个同源策略,以(domain,path)来判断,不区分端口和http还是https
domain匹配:机制跟面向对象编程的继承很像,也就是说子domain可以访问父domain的cookie,当domain=.baidu.com时,表示所有二级域名比如www.baidu.com都可以访问该cookie
path匹配:机制跟面向对象编程的继承很像,子path可以访问父path的cookie,比如path=/test/hello/可以访问path=/test/的cookie,当path=/时,表示,所有目录子可以访问该cookie
domain和path都要满足匹配规则时,才会读取相应的cookie
cookie读取出来后是不带domain,name属性的,即request header :cookie中不带属性
cookie写入时是带属性的,即response header: set-cookie是带属性的
子domain,path与父domain, path下最好不要出现同名的cookie,不然容易出错,因为没有这方面的规定,不同的浏览器和服务端使用不同的策略读
含值键值对的cookie:以前一直用的是nam=value单键值对的cookie,一说到含多个子键值对的就蒙了。现在总算弄清楚了。
含多个子键值对的cookie格式是name=key1=value1&key2=value2。可以理解为单键值对的值保存一个自定义的多键值字符串,
其中的键值对分割符为&,当然可以自定义一个分隔符,但用asp.net获取时是以&为分割符。