add by zhj: 客户端经过request header:cookie将cookie发给服务端,而服务端经过response header: set-cookie将cookie传回客户端html
一条cookie 就有一个 Set-Cookie。 格式是 key=value;Path=/;domain=xxxxx 这样的。windows
这是用fiddler对某discuz论坛一次请求的response header 截图。能够清晰的看到多条 Set-Cookie跨域
用户其中一个站点登陆,并且能够各个子频道间切换,保持登陆状态设置Cookie时,使用以下代码便可:
setcookie(name,value,expire,path,"domain.com");
这样,在每一个子域名都能读取这个Cookie的值。浏览器
domain和path是决定可跨域的2个参数.缓存
对于domain,"abc.com"则能够在abc.com主域名之下的多级子域名有效,".abc.com"只能在二级域名以及"www.abc.com"下有效,安全
其实客户端只是作了简单的匹配..你能够在此基础上作更多的分级控制..服务器
path是个有参考意义的属性,对于部分路径下开放访问的系统有意义,好比:abc.com/open下的程序和登陆是开放给特殊开发者接入的,cookie
这里的数据活着cookie须要作一些另类的处理..网络
原文:http://www.cnblogs.com/TankXiao/archive/2013/04/15/2848906.htmldom
Cookie是HTTP协议中很是重要的东西, 以前拜读了Fish Li 写的【细说Cookie】, 让我学到了不少东西。Fish的这篇文章写得太经典了。 因此我这篇文章就没有太多内容了。
最近我打算写一个系列的HTTP文章,我站在HTTP协议的角度, 说说我对Cookie的理解。
阅读目录
请看Fish Li 写的【细说Cookie】
能够大体把Cookie分为2类: 回话cookie和持久cookie
会话cookie: 是一种临时的cookie,它记录了用户访问站点时的设置和偏好,关闭浏览器,会话cookie就被删除了
持久cookie: 存储在硬盘上,(无论浏览器退出,或者电脑重启,持久cookie都存在), 持久cookie有过时时间
Cookie是存在硬盘上, IE存cookie的地方和Firefox存cookie的地方不同。 不一样的操做系统也可能存cookie的地方不同。
不一样的浏览器会在各自的独立空间存放Cookie, 互不干涉
以个人windows7, IE8为例, cookie存在这: C:\Users\xiaoj\AppData\Local\Microsoft\Windows\Temporary Internet Files
注意: 缓存文件和cookie文件,是存在一块儿的, 都在这个目录下。
你也能够这样找, 打开IE,点击Tools->Internet Options->General Tab下的->Browsing history下的Setting按钮,弹出的对话框中点击View files.
不一样的网站会有不一样的cookie文件
IE: 工具->Internet 选项 -> 隐私
浏览器把cookie经过HTTP Request 中的“Cookie: header”发送给Web服务器
Web服务器经过HTTP Response中的"Set-Cookie: header"把cookie发送给浏览器
使用Fiddler能够清楚地看到cookie在HTTP中传递。 Fiddler工具中能够清晰的看到Http Request 中的Cookie, 和Http Response中的cookie
实例: 启动Fiddler, 启动浏览器访问一些购物网站,就能够看到。
咱们以”博客园自动登录“的例子,来讲明cookie是如何传递的。
你们知道博客园是能够自动登录的。 以下图,这个是什么原理呢?
假如我已经在登录页面输入了用户名,密码,选择了保存密码,登录。
(这时候,其实在你的机器上保存好了登录的cookie, 不信你能够按照上节介绍方法去你的电脑上找下博客园的cookie)
当我下次访问博客园流程以下。
1. 用户打开IE浏览器,在地址栏上输入www.cnblogs.com.
2. IE首先会在硬盘中查找关于cnblogs.com的cookie. 而后把cookie放到HTTP Request中,再把Request发给Web服务器。
3. Web服务器返回博客园首页(你会看到你已经登录了)。
经过上面这个例子,能够看到cookie是很重要的,识别是不是登录用户,就是经过cookie。 假如截获了别人的cookie是否能够冒充他人的身份登录呢? 固然能够, 这就是一种黑客技术叫Cookie欺骗。
利用Cookie 欺骗, 不须要知道用户名密码。就能够直接登陆,使用别人的帐户作坏事。
我知道有两种方法能够截获他人的cookie,
1. 经过XSS脚步攻击, 获取他人的cookie. 具体原理能够看 [Web安全性测试之XSS]
2. 想办法获取别人电脑上保存的cookie文件(这个比较难)
拿到cookie后,就能够冒充别人的身份了。 这个过程我就不演示了。
不少人会把cookie和文件缓存弄混淆, 这两个彻底是不同的东西。惟一的相同之处多是它们俩都存在硬盘上,并且是存在同一个文件夹下。
关于HTTP缓存请看这 【HTTP协议之缓存】
咱们在IE中能够选择分别删除Cookie和缓存文件
2013年央视的315晚会上, 曝光了不少不法公司利用Cookie跟踪并采集用户的我的信息,并转卖给网络广告商,造成了一条窃取用户信息的灰色产业链。从而实现广告准确投放。严重干扰了用户的正常网络应用,侵害了我的的隐私和利益。
我常常就在门户网站上发现广告位上显示的是我在电商网站上流量过的商品。 这就是个人cookie被泄露了。
目前在欧洲, 已经对Cookie立法, 若是网站须要保存用户的cookie, 必须弹出一个对话框,要用户确认后才能保存Cookie.
从上面看来, Cookie 是一个比较容易泄露用户隐私和危险的东西。 有没有办法保护我的用户隐私呢? 那就是P3P协议
P3P是一种被称为我的隐私安全平台项目(the Platform for Privacy Preferences)的标准,可以保护在线隐私权,使Internet冲浪者能够选择在浏览网页时,是否被第三方收集并利用本身的我的信息。若是一个 站点不遵照P3P标准的话,那么有关它的Cookies将被自动拒绝,而且P3P还可以自动识破多种Cookies的嵌入方式。p3p是由全球资讯联盟网 所开发的。
附: HTTP协议 系列教程, (连载中, 敬请期待)