iFrames + 谷歌分析 + Cookies + P3P

Posted

技术标签:

【中文标题】iFrames + 谷歌分析 + Cookies + P3P【英文标题】:iFrames + Google Analytics + Cookies + P3P 【发布时间】:2011-04-02 14:59:58 【问题描述】:

我正在开发一个为合作伙伴网站带来流量的网站。当在我们的网站上单击合作伙伴网站的徽标时,我们会在包含我们的基本标题和 iframe 内的合作伙伴网站的页面中打开合作伙伴网站。早些时候,我们只是在新窗口中打开合作伙伴网站。到目前为止一切都很酷。

大多数合作伙伴网站使用谷歌分析来跟踪我们发送给他们的流量,在我们开始在 iframe 中打开网站后不久,我们的合作伙伴报告说谷歌分析不再跟踪数据(或只跟踪一小部分数据)。

我在 googleverse 上完成了相当多的家庭作业/研究,并发现了跨域和 iframe 的谷歌分析或 cookie 的已知问题。

我正在尝试解决此问题,唯一被引用的解决方案是使用 P3P 标头。

    首先,P3P 标头在哪里?在我的网站页面或合作伙伴网站页面中。由于我们有许多合作伙伴网站(大大小小的),如果解决方案是在这些网站中的每一个中放置标签,那将是不切实际的。我可以轻松地将它们添加到包含 iframe 的页面中。

    在各种 p3p 标头生成器中,您推荐一种可靠的吗?

    有没有办法解决这个问题?我真的需要在 iframe 中打开网站,显然合作伙伴网站确实需要跟踪流量。

感谢您的帮助。

【问题讨论】:

@eduardocereto:添加了更多代码示例。 【参考方案1】:

很遗憾,您和合作伙伴网站都需要设置标题。

替代方案:

如果您不希望合作伙伴网站设置标题,一种选择是降低安全级别(在 IE 中)或在浏览器设置中授予对第 3 方 cookie(在 FF 中)的访问权限。每个客户都必须这样做,所以这可能不是一个有吸引力的解决方案。 使用localStoragehtml5 thingy - 支持localStorage 的浏览器允许访问站点和存储在localStorage 中的iFrame 内容)。这在短期内可能不可行,因为它需要您和您的合作伙伴网站都实现向/从localStorage 保存/读取信息,并且并非每个浏览器都支持它(尤其是较旧的 IE 浏览器)。

添加基本策略标题(理想情况下,您应该直接生成自己的策略 - 检查下面的第 2 项)

php中加入这一行:

<?php header('P3P: CP="CAO PSA OUR"'); ?>

ASP.Net 中:

HttpContext.Current.Response.AddHeader("p3p", "CP=\"CAO PSA OUR\"");

HTML 页面中:

<meta http-equiv="P3P" content='CP="CAO PSA OUR"'>

关于您的其他问题:

1) P3P 标头是指将称为compact policy 的内容传递给浏览器的HTTP 标头。如果没有这样的政策,IE(尤其是)和其他浏览器将阻止访问 3rd 方 cookie(用于指代 iFrame 的 cookie 的术语)以保护用户的隐私问题。

就 Google Analytics(分析)而言,您的网站和合作伙伴网站仍需要按照文档中的说明配置 cross domain tracking。

2)您可以使用这个基本策略标头(足以修复 iFrame 的 cookie):

P3P:CP="CAO PSA OUR"

或生成您自己的。如果您不确定这些术语的含义,请参阅this。

要生成此类策略,您可以使用在线编辑器,例如 p3pedit.com 或 IBM 的 tool,它们会提供一组问题并允许您提供答案。这使您可以轻松快速地生成此类策略。您可以生成policy XML、compact policy 等。

3) 您可以尝试上述两种方法。

将政策添加到整个网站的步骤

    生成紧凑策略(使用前面提到的工具之一)或使用基本策略 在 IIS 中,右键单击所需的页面、目录或站点,然后单击“属性”。 在 HTTP 标头选项卡上,单击添加。 在“自定义标题名称”字段中,键入 P3P。 在“自定义标头值”字段中,输入您的 Compact P3P 策略(或上面的基本策略),然后单击“确定”。 在 Apache 中,这样的 mod_header 行就可以了:
Header append P3P "CP=\"CAO PSA OUR\""

希望对您有所帮助。

【讨论】:

好答案。我注意到 CP="CAO PSA OUR" 通常足以绕过 cookie 限制。 除了遵守没人关心的规范之外,还有什么理由创建完整的 P3P 文件? 创建完整 P3P 文件的原因是您关心它! :) IE 10 是否仍然支持 P3P 元标记? IE 8 是公司的默认浏览器,我正在尝试让 Google Analytics 在 iF​​rame 中工作,当然 IE 是有问题的。 由于P3P很大程度上是MS的想法,而且IE是唯一支持它的主要浏览器,我不会这么认为。此外,根据他们的privacy statement,他们这样做了。

以上是关于iFrames + 谷歌分析 + Cookies + P3P的主要内容,如果未能解决你的问题,请参考以下文章

如何修复“同时使用 <script> 和 <iframe>”建议的 google adwords 代码

对于一个首次加载的页面。判断其Cookies是不是为空

移动谷歌浏览器不发送cookies

如何在本地主机上禁用谷歌分析

父页面刷新 保持iframe页面url不变

谷歌翻译 iframe 解决方法