P3P_浏览器cookie_iframe
且说我使用有些网络服务的时候常常能遇到比较怪异的问题。昨天在某个页面遇到个Redirect Loop 错误提示:
Firefox has detected that the server is redirecting the request for this address in a way that will never complete.
同样的问题,同样的页面,同样是 Firefox 浏览器,以前就遇到过,提交给相关负责人之后没了响应,后来也忘掉了。同事说是我浏览器版本的问题,后来发现这和"是否接受第三方 Cookie" 的设置有关:
[x] Accept cookies from sites
[ ] Accept third-party cookies
我的浏览器不接受第三方 Cookie。设置接收后该页面显示正常。
搜索了一下,发现之所以该页面是这样,还是因为页面用了 iframe 而导致的问题,比较通用的办法是设置 p3p http header 。
这个 P3P(Platform for Privacy Preferences Project),要搞明白,可真是有点小孩没娘,说来话长。简单的说,就是个协议,通过其声明它是好人,允许我收集浏览器用户行为吧... 可现实中,大家都可以说自己是好人,背地里没准儿干啥坏事呢。这就是其分歧所在。[参考] 国内多数网站,都不关注这个 P3P。隐私问题可能没国外(微软的隐私声明)重视吧。
再说 Firefox ,过去的几个大版本中,对 Cookie 的处理方式还是有很大变化的。
这个问题影响最大的还是 Facebook 等开放平台的应用,使用了 iframe 就会遇到(eg:FriendFeed 遇到过,估计还比较头疼)。
对于浏览器来说,第三方 Cookie ,默认情况下,浏览器接受与否,是个大问题。如果不接受,会给很多用户带来混淆,如果接受,则在隐私问题上,有很大的挑战。
实际上,Firefox 的开发者在这个地方的处理方式也在摇摆当中(参见), 不过能确定的是 "the ability to make decisions based on p3p policies was removed for firefox 3"。
各家浏览器在这个地方都可能有 Bug。比如 IE7 曾经有的 Cookie 问题,IE8 Beta 也有类似问题。
或许,最好的办法就是别去种这个 Cookie 了... 网站开发者,你们愿意么?
From:http://www.dbanotes.net/web/cookie_p3p.html
--EOF--
分享到:
相关推荐
在跨域设置Cookie的场景中,例如一个网页中嵌入了另一个域的iframe,若要使浏览器接受并存储第三方Cookie,网站需要提供P3P头。在上面的例子中,`http://www.b.com/b_setcookie.php` 的iframe尝试设置 `...
不同浏览器对P3P、Cookies和IFrame的处理方式存在差异,如Firefox目前不完全支持P3P标准,而IE则严格遵守P3P策略。因此,在设计解决方案时,应考虑目标用户群体使用的浏览器类型,以确保兼容性和用户体验。 通过...
总结来说,解决Iframe跨域访问Cookie和Session的关键在于理解和利用浏览器的特性,如P3P协议,以及巧妙地调整代码结构。同时,对于Session的管理,要意识到它与Cookie之间的关联性。在多系统集成的场景下,这些技巧...
但这并不总是有效,因为并非所有浏览器都支持或严格遵守P3P。 2. **CORS(Cross-Origin Resource Sharing)**:CORS是一种现代的跨域访问控制机制,允许服务器通过设置特定的HTTP响应头来指定哪些源可以访问其资源...
通过这种方式,可以解决在IE浏览器中由于P3P隐私设置导致的iframe跨域cookie丢失问题,进而解决session失效导致的用户频繁重新登录的问题。这个方法在技术上是可行的,但需要网站管理员操作,确保P3P声明符合实际的...
深入分析:出于隐私安全的考虑,IE 会丢失 Iframe 中的 Cookie,IE6/IE7 支持的 P3P(Platform for Privacy Preferences Project specification)协议默认阻止第三方无隐私安全声明的 Cookie,Firefox、Chrome 不...
P3P头的`CP`参数表示饼干(Cookie)策略,这里的`ALL ADM DEV PSAi COM OUR OTRo STP IND ONL`是一个特定的策略字符串,告诉浏览器这个网站可以接受第三方的Cookie,从而解决IE在iframe中处理Session的问题。...
P3P (Platform for Privacy Preferences) 是一种隐私保护标准,通过设置`CP=CAO PSA OUR`这样的P3P策略,可以告知浏览器该网站遵守特定的隐私保护政策。 - **使用postMessage API**:可以通过`window.postMessage`...
解决办法是,在子系统的登录代码中加入 P3P 的认证,即允许第三方读取 cookie,这样 cookie 值才能被浏览器正确的读取并保存。 知识点一:跨域页面访问的定义和原因 跨域页面访问是指在多个系统集成的情况下,主...
通过设置P3P头部,可以告诉浏览器该网站对于Cookie的处理方式,从而绕过IE对写Cookie的阻止。比如,设置P3P头部为"CP=CAOPSAOUR",这表示“遵守匿名规则和操作规则”。 在***里,如果要通过ajax跨域调用***中的内容...
P3P(Platform for Privacy Preferences Project)是一种用于Web隐私保护的技术,它允许网站以标准化的方式描述其隐私政策,从而使得浏览器能够自动做出是否接受该站点cookie的决定。在这种情况下,检测iframe页面的...
同时,P3P(Platform for Privacy Preferences Project)是一种尝试解决跨域数据共享的隐私策略标准,但其实际应用已不如当初广泛。 总结起来,理解和熟练掌握Cookie在JavaScript中的使用以及服务器端的隐私设置是...
- **PHP在IE下的iframe跨域session丢失问题**:由于浏览器同源策略,跨域会导致会话丢失,可以通过设置 P3P 头部或使用共享域名的 cookie 来解决。 - **Failed to write session data** 错误:这通常是因为临时...