iFrames + Google Analytics + Cookies + P3P

时间:2010-08-23 12:20:10

标签: cookies google-analytics iframe p3p

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

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

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

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

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

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

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

  4. 感谢您的帮助。

1 个答案:

答案 0 :(得分:8)

不幸的是,您和合作伙伴网站都需要设置标头。

备选方案:

  • 如果您不希望合作伙伴网站设置标头,则一个选项是降低安全级别(在IE中)或在浏览器设置中授予对第三方Cookie(在FF中)的访问权限。每个客户都必须这样做,所以这可能不是一个有吸引力的解决方案。
  • 使用localStorage(HTML5 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标头引用HTTP标头,向浏览器提供名为compact policy的内容。如果没有这样的政策,IE(最值得注意的)和其他浏览器将阻止访问第三方cookie(用于指代iFrame的cookie的术语)以保护用户的隐私问题。

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

2)您可以使用此基本政策标题(这足以修复iFrame的Cookie):

  

P3P:CP =“CAO PSA OUR”

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

要生成此类策略,您可以使用p3pedit.com或IBM tool等在线编辑器,这些编辑器会提供一组问题并允许您提供答案。这使您可以轻松快速生成此类策略。您可以生成policy XMLcompact policy等内容。

3)您可以尝试上面提到的两种替代方案。

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

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

    希望有所帮助。