P3P是什么

P3P(Platform for Privacy Preferences)是W3C公布的一项隐私保护推荐标准,以为用户提供隐私保护。   P3P标准的构想是:Web 站点的隐私策略应该告之访问者该站点所收集的信息类型、信息将提供给哪些人、信息将被保留多少时间及其使用信息的方式,如站点应做诸如 “本网站将监测您所访问的页面以提高站点的使用率”或“本网站将尽可能为您提供更合适的广告”等申明。访问支持P3P网站的用户有权查看站点隐私报告,然 后决定是否接受cookie 或是否使用该网站。

利用P3P实现跨域

有别于JS跨域、IFRAME跨域等的常用处理办法,通过发送P3P头信息而实现的跨域。

PHP 使用P3P协议

header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"');

  

JS 使用P3P协议

xmlhttp.setRequestHeader( "P3P" , 'CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"' );

  

ASP.NET 使用P3P协议

HttpContext.Current.Response.AddHeader("p3p", "CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\"")

  

JSP 使用P3P协议

response.addHeader("P3P", "CP=IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT");

策略说明

(http://www.w3.org/2002/04/P3Pv1-header.html)

compact-policy-field         =   `CP="` compact-policy `"`

compact-policy                = compact-token *(" " compact-token)

compact-token                = compact-access           |

compact-disputes         |

compact-remedies         |

compact-non-identifiable |

compact-purpose          |

compact-recipient        |

compact-retention        |

compact-categories       |

compact-test

compact-access           = "NOI" | "ALL" | "CAO" | "IDC" | "OTI" | "NON"

compact-disputes            = "DSP"

compact-remedies          = "COR" | "MON" | "LAW"

compact-non-identifiable = "NID"

compact-purpose           = "CUR"        | "ADM" [creq] | "DEV" [creq] | "TAI" [creq] |

"PSA" [creq] | "PSD" [creq] | "IVA" [creq] | "IVD" [creq] |

"CON" [creq] | "HIS" [creq] | "TEL" [creq] | "OTP" [creq]

creq                              = "a" | "i" | "o"

compact-recipient        = "OUR" | "DEL" [creq] | "SAM" [creq] | "UNR" [creq] |

"PUB" [creq] | "OTR" [creq]

compact-retention          = "NOR" | "STP" | "LEG" | "BUS" | "IND"

compact-category           = "PHY" | "ONL" | "UNI" | "PUR" | "FIN" | "COM" |

"NAV" | "INT" | "DEM" | "CNT" | "STA" | "POL" |

"HEA" | "PRE" | "LOC" | "GOV" | "OTC"

compact-test                  = "TST"

简洁策略

常用的简洁策略的 P3P头为 -   P3P : CP=CAO PSA OUR

最简洁的写法是 P3P:CP=.

compact-access(访问):  CAO - contact-and-other  允许第三方cookie的读写)
compact-purpose(目的):  PSA -  pseudo-analysis .目的就是做身份验证、分析
compact-recipient(受体):  OUR - ours 声明使用相关信息的人是谁,ours 第三方自己

浏览器支持情况

浏览器 默认允许第三方Cookie 是否支持P3P 禁止第三方Cookie后,配置P3P简明策略头的效果
IE6

HTTP可读写Cookie JS可读Cookie 首次读到P3P头,JS无写Cookie权限.第二次才OK

(第二次.直接Cache.也不行.除非第一次非Cache并读到p3p头.后面我会提到解决方案.)

应当避免JS的写操作

IE7-IE9
HTTP、JS,可随意读写.
FireFox HTTP、JS都不可读写
Chrome 部分支持,趋势-否 趋势为HTTP、JS可读不可写.
Safari HTTP、JS可读不可写
可以借助借助Post提交表单,实现写操作.
Opera
JS可读写 HTTP可读不可写.

 相关资料http://www.w3.org/P3P/

P3P解决cookie跨域的更多相关文章

  1. 解决cookie跨域访问

    一.前言 随着项目模块越来越多,很多模块现在都是独立部署.模块之间的交流有时可能会通过cookie来完成.比如说门户和应用,分别部署在不同的机器或者web容器中,假如用户登陆之后会在浏览器客户端写入c ...

  2. 解决cookie跨域访问.2

    v一.前言 随着项目模块越来越多,很多模块现在都是独立部署.模块之间的交流有时可能会通过cookie来完成.比如说门户和应用,分别部署在不同的机器或者web容器中,假如用户登陆之后会在浏览器客户端写入 ...

  3. 利用nginx解决cookie跨域

    一.写在前面 最近需要把阿里云上的四台服务器的项目迁移到客户提供的新的项目中,原来的四台服务器中用到了一级域名和二级域名.比如aaa.abc.com 和bbb.abc.com 和ccc.abc.com ...

  4. 解决前后端分离后的Cookie跨域问题

    一. 前端Ajax关键配置 $.ajax({ type: "post", url: xxx, data: xxx, contentType: 'application/json', ...

  5. cookie跨域问题汇总

    一.通过nginx反向代理 通过nginx反向代理后,使得浏览器认为访问的资源都是属于相同协议,域名和端口的. 详细见:<nginx实现跨域访问> 二.jsonp方式请求 v jquery ...

  6. CP="CAO PSA OUR" 用P3P header解决iframe跨域访问cookie

    1.IE浏览器iframe跨域丢失Session问题 在开发中,我们经常会遇到使用Frame来工作,而且有时是为了跟其他网站集成,应用到多域的情况下,而Iframe是不能保存Session的因此,网上 ...

  7. 通过P3P头实现跨域设置cookie

    PHP的setcookie函数可以设置域,但是只能在当前域内,如果出现多域可由如下办法处理:实现原理:www.b.com/set_cookie.php   在b域名下设置a域名的cookie < ...

  8. cookie 跨域解决方法

    1.Nginx 正向和反向代理的区别 正向代理和反向代理的区别:正向代理隐藏真实客户端,反向代理隐藏真实服务端,图示: 2.cookie跨域问题 因为cookie存在跨域问题,其中一个解决方法是,设置 ...

  9. ASP.NET中Cookie跨域的问题及解决代码

    ASP.NET中Cookie跨域的问题及解决代码 http://www.liyumei.net.cn/post/share18.html Cookies揭秘  http://www.cnblogs.c ...

随机推荐

  1. PHP100精华:很靠谱linux常用命令

    vim是打开vim编辑器,别的编辑器还有vi(功能没有vim 强大),nano,emacs等等,感觉还是vim最强大,其次是vi,别的就要差一些了. 我听我们老师说,用图形界面本身已经会被高手笑了,如 ...

  2. OSG 中文解决方案 【转】

    概述 本文只限于 windows 环境下. OSG 在 windows 下对中文支持已经非常的好了,但是可能很多人并不知道如何去正确的使用.为了解决这些常见的问题,还有一些基础知识的普及.特此把 OS ...

  3. metal的gpu query

    https://developer.apple.com/documentation/metal/mtlcommandbuffer/1639924-gpustarttime gpuStartTime 看 ...

  4. http://blog.sina.com.cn/s/blog_546abd9f0101c6au.html

    http://blog.sina.com.cn/s/blog_546abd9f0101c6au.html

  5. Hadoop端口一览表

    Hadoop端口一览表 @(Hadoop) 端口名 用途 50070 Hadoop Namenode UI端口 50075 Hadoop Datanode UI端口 50090 Hadoop Seco ...

  6. 纯 PHP 代码最好在文件末尾删除 PHP 结束标记

    如果文件内容是纯 PHP 代码,最好在文件末尾删除 PHP 结束标记.这可以避免在 PHP 结束标记之后万一意外加入了空格或者换行符,会导致 PHP 开始输出这些空白,而脚本中此时并无输出的意图. & ...

  7. Windows录音API学习笔记

    Windows录音API学习笔记 结构体和函数信息  结构体 WAVEINCAPS 该结构描述了一个波形音频输入设备的能力. typedef struct { WORD      wMid; 用于波形 ...

  8. 动态网站技术CGI

    递信息的规程.CGI规范允许Web服务器执行外部程序,并将它们的输出发送给Web浏览器,CGI将Web的一组简单的静三种主流的动态网站技术: ASP JSP PHP 除之外,此还要了解的动态网站技术 ...

  9. arcgis的mxd数据源检查,和自动保存为相对路径

    arcgis的mxd数据源(含矢量和影像)检查,和,检查是否为相对路径,自动保存为相对路径 ArcGIS10.0和ArcGIS10.2.2测试通过 下载地址:http://files.cnblogs. ...

  10. java程序main方法的参数String[] args

    public class ArgsTest { public static void main(String[] args) { System.out.println(args.length); fo ...