http://www.189works.com/article-76907-1.html 关于cookie跨域的问题(没用到,留下来,和下面的原理是一样的)
P3P是万维网联盟(W3C)公布的一项隐私保护推荐标准,旨在为网上冲浪的Internet用户提供隐私保护。现在有越来越多的网站在消费者访问时,都会收集一些用户信息。制定P3P标准的出发点就是为了减轻消费者因网站收集个人信息所引发的对于隐私权可能受到侵犯的忧虑。P3P标准的构想是:Web 站点的隐私策略应该告之访问者该站点所收集的信息类型、信息将提供给哪些人、信息将被保留多少时间及其使用信息的方式,如站点应做诸如 “本网站将监测您所访问的页面以提高站点的使用率”或“本网站将尽可能为您提供更合适的广告”等申明。访问支持P3P网站的用户有权查看站点隐私报告,然后决定是否接受cookie或是否使用该网站。
Cookie你们都懂得,这里就不介绍了。
利用p3p来跨域保存cookie从而可以很方便的利用p3p来共享用户。
如果有需求是这样的可以很方便的利用p3p来实现
比如,
1,我有一个统一的用户登录入口就叫LoginServer, 所有的登录请求都要post到这里。
2,利用 LoginServer我们将登录后的 token传给子站点,保存cookie,比如现有两个站点A,B
3,在 LoginServer 登录成功后输出<scritpt src=”http://www.a.com/SetCookie.aspx?token=^*92dh1ghasdy”/>
Response.AddHeader("p3p", "CP=IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT");
4,B站点和A站点一样,接着我们就可以设置访问A站点,读取刚才在统一登录站点下保存的Cookie了。
注:这里的token可以是自己生成唯一的保存在数据库中,也可以通过用户名和ID加密的方式传过去。总是有一个身份标示就好。
经测试,Firfox,opera下是不支持p3p的,不过可以不用指定p3p,也可以读取到cookie.
---------------------------------------------------------------------------------------------------------------------------需测试
cookie 若要跨域名 同步,(如www.sina.com , bbs.sina.com等)
1..net framework 1.1之间共享
则必须设置 web.config
<machineKey validationKey= "C50B3C89CB21F4F1422FF158A5B42D0E8DB8CB5CDA1742572A487D9401E3400267682B202B746511891C1BAF47F8D25C07F6C39A104696DB51F17C529AD3CABE"
decryptionKey= "8A9BE8FD67AF6979E7D20198CFEA50DD3D3799C77AF2B72F"
validation="SHA1">
</machineKey>
<authentication mode="Forms">
<forms name="Advertisement" loginUrl="User/login.aspx" protection="All" timeout="100" path="/">
</forms>
</authentication>
必须相同设置,在cookie对象实例子中要甚至属性“Domain” 如 sina.com
2。1.1 和2.0 的共享cookie
在2.0中 <machineKey /> 设置 除了和1。1一样,还要增“decryption” 属性,值必须是 “3DES”