Cookie和Session同是Web应用为了保持和客户端浏览器之间的会话的两种方式,同样保存了单个用户(浏览器)的key-value形式的数据。
Cookie
Cookie的信息保存在客户端,如果服务端需要在客户端写入Cookie,会在HTTP 的相应头中设置Set-Cookie消息,浏览器接收相应之后,将这些键值的对应的数据存在本地。例如访问淘宝首页收到的响应头如下:
abt=h; expires=Mon, 21-Jun-2010 15:21:48 GMT; path=/; domain=www.taobao.com
Set-Cookie的各个属性
1. abt=h,表示一个键值对,设置一个名为abt值为h的cookie到本地。
2. expires= Mon, 21-Jun-2010 15:21:48 GMT,Cookie的过期时间,如果没有指定这个时间,则这个Cookie不会被写入到客户端的文件中,本次会话结束(浏览器关闭)之后Cookie失效
3. path=/,指定Cookie的有效路径,/代表根目录,对站点下所有路径中访问都要带上此条Cookie,如果Cookie指定了某个目录,比如说 path=/member,只有访问/member/下的URL,浏览器才会在发请求的时候带上此条Cookie,否则忽略。
4. domain=www.taobao.com,cookie作用的域名,如果domain为空,则会默认被置为相应的域名,如果domain不为空而且和服务器的域名不一致就会被忽略掉。如果设置域名为.taobao.com,这条cookie对taobao.com下所有的二级域都有效。
5. secure 如果这个词被设置,则只能在SSL通道传输
浏览器对服务端进行请求的时候,都会带上有效的Cookie,有些时候这些Cookie是多余的,比如说在请求静态文件(CSS,JS文件),图片等,这毫无疑问浪费了带宽,所以,很多大型的网站采用CDN的形式存放静态的文件和图片,主站的域名和CDN域名不同,在大量请求CDN上的静态文件时,就不需要带上没有任何必要的Cookie数据了。