2010-08-23 76 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