2010-08-23 78 views
11

我正在为合作伙伴网站生成流量的网站上工作。当在我们的网站上点击合作伙伴网站的标志时,我们会在包含我们的基本标题和iframe中的合作伙伴网站的页面中打开合作伙伴网站。之前我们只是在新窗口中打开合作伙伴网站。迄今为止都很酷。iFrames + Google Analytics + Cookies + P3P

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

我已经完成了我在googleverse上的作业/研究的公平份额,并发现了谷歌分析或一般跨域和iframe的cookie的知识问题。

我想解决这个问题,并且唯一引用的解决方案是使用P3P头文件。

  1. 首先,P3P标题去哪里?在我的网站页面或合作伙伴网站页面中。由于我们有很多合作伙伴网站(大和小),如果解决方案将标签放在这些网站中的每一个中,它都不会实用。我可以很容易地将它们添加到包含iframe的页面中。

  2. 在各种p3p标题生成器中有一个可靠的建议吗?

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

谢谢你的帮助。

+0

@eduardocereto:增加了一些代码示例。 – Mrchief 2011-08-16 15:35:55

回答

7

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

替代方案:

  • 如果你不希望合作伙伴网站上设置头,一种选择是降低安全水平(IE)或授予在浏览器中访问第三方Cookie(在FF)设置。每个客户都必须这样做,所以这可能不是一个有吸引力的解决方案。
  • 使用localStorage(HTML5 thingy - 支持localStorage的浏览器允许访问存储在localStorage中的站点和iFrame内容)。这可能在短期内不可行,因为它要求您和您的合作伙伴网站实现localStorage的储存/读取信息,而不是每个浏览器都支持它(尤其是旧版IE浏览器)。

增加一个基本策略标题(理想情况下,你应该生成自己的政策,是直线前进 - 检查以下项目#2)

PHP加入这一行:

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

ASP。净

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)来保护用户的隐私问题。

至于谷歌分析去,您的网站和合作伙伴网站仍需要配置cross domain tracking作为他们的文档中列出。

2)您可以使用此基本政策头(这是不足以解决iframe的饼干):

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. 阿帕奇,这样的mod_header线将做到:
Header append P3P "CP=\"CAO PSA OUR\"" 

希望的部份帮助。

+0

很好的答案。我注意到CP =“CAO PSA OUR”通常足以绕过cookie限制。 – Eduardo 2011-08-16 23:36:53

+2

除了坚持没有人关心的规范之外,是否有任何理由创建完整的P3P文件? – Eduardo 2011-08-16 23:37:44

+1

创建一个完整的P3P文件的原因是你关心它! :) – Mrchief 2011-08-17 02:16:46