11

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

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

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

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

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

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

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

感谢您的帮助。

4

1 回答 1

8

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

备择方案:

  • 如果您不希望合作伙伴站点设置标题,一种选择是降低安全级别(在 IE 中)或在浏览器设置中授予对 3rd 方 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 标头。如果没有这样的政策,IE(尤其是)和其他浏览器将阻止访问 3rd 方 cookie(用于指代 iFrame 的 cookie 的术语)以保护用户的隐私问题。

就 Google Analytics 而言,的网站和合作伙伴网站仍然需要按照文档中的说明配置跨域跟踪。

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

P3P: CP="CAO PSA OUR"

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

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

3)您可以尝试上面提到的两种选择。

将策略添加到整个站点的步骤

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

希望这会有所帮助。

于 2011-08-15T06:02:22.200 回答