P3P设置第三方cookie解决方案

 原文地址:http://blog.csdn.net/lovingprince/article/details/5984449web

      首先,什么是 P3P ( Platform for Privacy Preferences ),其实就是一种能够提供我的隐私保护策略的平台协议。网上去去找,说得更清楚,我就不罗嗦了,我只举个实际例子让你们有个认识。面试

  例如 first.abc.com 这个页面中使用 iframe( 或者 img 、 script 等等方式 ) 嵌入了一个 third.xyz.com 的页面, first.abc.com 会设置一些 cookie 到用户本地,例如 trackid,   因为咱们浏览器直接访问就是 first.abc.com ,因此这些 first.abc.com 设置的 cookie 能够称为第一方 cookie ,而 third.xyz.com 也可能须要设置一些cookie 到本地,例如 uc1 什么的,相对而言,这个 third.xyz.com 设置的 cookie 叫第三方 cookie( 不是本家 ) ,而在 iframe 等发出请求到 third.xyz.com 时,通常但愿可以将本域名 (.xyz.com) 下的原有 cookie( 例如这里他本身设置的 uc1) 带上,不过不幸的是因为某些浏览器用户隐私保护设置问题,不会把 third.xyz.com 的cookie 发送出去,若是 third.xyz.com 须要依赖这些本地发送的 cookie ,那么就会产生问题。跨域

 

 浏览器也有本身相应的默认选项。那如何让浏览器发送这些 cookie 呢?那就选择 高级 -> 勾选自动覆盖 cookie 处理。此时, third.xyz.com 的 cookie 就能够发送出去了。浏览器

 

   不过话说回来,不可能让全部用户都去设置本身的浏览器吧?那怎么解决?那就是 P3P 的功能了,他提供给 web 服务器一个功能,制定一个策略 ,发表一个相似以下声明说:请把 cookie 给我吧,我拿来只是看看,能够帮助你提供更好的服务,绝对不透露给其余人。   浏览器收到这个声明后,会对比浏览器的设置,给用户一个提示,让用户选择是否发送 ( 固然,这个看浏览器若是处理的,通常来讲看了声明都没有阻止 cookie 发送,有点奇怪的说 ) 。那么如何设置 P3P 呢?一种方式是使用 P3P 策略文件,至关之复杂,看了后怕,有兴趣本身去了解,另外一种方式就是直接在 response中设置 P3P Header 便可,具体怎么设置,以及一些设置限制 请看 下面试验出来的结果:服务器

一、 跟js 跨域不一样,P3P 设置时只须要在任何同父域名的域名中header 设置一次便可生效,例如 xx.xyz.com 的域名response 中设置header 设置一次P3P ,和从yy.xyz.com 的response 中设置P3P header ,效果同样,他们都有.xyz.com 的顶级域名,设置一次以后针对全部顶级域名xyz.com 的应用都有效。cookie

二、 上面说了P3P 的一个实际例子,能够知道,应该是须要cookie 发送的一方设置P3P 头,说明白一点,即first.abc.com 页面iframe 了 first.xyz.com ,那么应该在first.xyz.com 的response 中设置response Header( 记住是在第三方设置便可。)spa

三、 同一个顶级域名下,屡次设置P3P ,仅第一次有效。.net

四、 置header 时须要同时设置cookie ,这些设置的cookie 就被P3P 声明了,后续均可以一直使用,没有在这里申明的cookie ,是被禁止被发送的。orm

五、   接上面第4 点,若是是前面被P3P 声明过的cookie ,例如t ,后面又被response 设置一次,可是此次却没有p3p 头,其实至关于这个cookie  t 的申明被取消了,那么后续做为第三方cookie 的 t ,就会被禁止,这点必定注意。blog

六、 对了,关键的忘记了,头怎么设置?相似 rundata.getResponse().addHeader("P3P","CP='CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR'"); 便可,不过其中的英文字符表明什么意思,你们能够去官方上看下。不作解释了,下面提供几个参考地址。

 

IE6: http://msdn.microsoft.com/en-us/library/ms537343.aspx#cookie_filtering

P3p: http://www.w3.org/P3P/

 

另外:下面附几个 cookie 限制,因为还有小版本的区别,这里只是一个大概,不必定精确,具体个数,你们能够在本身的浏览器上用 JS 循环写 cookie 试一试。看下能保存多少

如下就是关于各浏览器之间对 cookie 的不一样限制:

 

IE6.0

IE7.0/8.0

Opera

FF

Safari

Chrome

cookie 个数:

每一个域为 20个

每一个域为 50 个

每一个域为 30个

每一个域为 50个

没有个数限制

每一个域为 53个

cookie 总大小:

4K

4K

4K

4K

4K

4K

    对于后面多写的 cookie ,浏览器采用的替换策略也不一致, IE6 基本上是采用最近最少使用策略, ff 就是后面替换前面的。

相关文章
相关标签/搜索