2010-08-23 3 views
11

Je travaille sur un site web qui génère du trafic pour les sites partenaires. Lorsque le logo d'un site partenaire est cliqué sur notre site, nous ouvrons le site partenaire dans une page qui contient notre en-tête de base et le site partenaire dans un iframe. Auparavant, nous ouvrions simplement le site partenaire dans une nouvelle fenêtre. Tout est cool jusqu'à présent.iFrames + Google Analytics + Cookies + P3P

La plupart des sites partenaires utilisent google analytics pour suivre le trafic que nous leur envoyons et peu de temps après avoir ouvert des sites dans iframe nos partenaires ont signalé que google analytics ne suit plus les données (ou ne suit qu'une fraction des données).

J'ai fait ma part de devoirs/recherches sur googleverse et j'ai trouvé le problème avec google analytics ou les cookies en général dans les domaines et les iframes.

J'essaie de résoudre ce problème et la seule solution qui a été référencée est l'utilisation d'en-têtes P3P.

  1. Premièrement, où vont les en-têtes P3P? Dans mes pages de sites ou les pages de sites partenaires. Puisque nous avons de nombreux sites partenaires (grands et petits), il ne sera pas pratique si la solution est de mettre des tags dans chacun de ces sites. Je peux facilement les ajouter à la page qui contient le iframe.

  2. Parmi les différents générateurs d'en-tête p3p, y en a-t-il un de fiable que vous recommandez?

  3. Y at-il un moyen de contourner ce problème? J'ai vraiment besoin d'ouvrir les sites dans les iframes et évidemment les sites partenaires ont vraiment besoin de suivre le trafic.

Nous vous remercions de l'aide.

+0

@eduardocereto: Ajout d'autres exemples de code. – Mrchief

Répondre

7

Malheureusement, vous et le site partenaire devez définir les en-têtes.

Alternatives:

  • Si vous ne voulez pas que le site partenaire pour définir les en-têtes, une option est d'abaisser le niveau de sécurité (dans IE) ou accorder l'accès aux cookies 3ème partie (en FF) dans le navigateur paramètres. Chaque client doit le faire, ce qui peut ne pas être une solution attrayante.
  • Utilisez localStorage (les navigateurs HTML5 thingy prenant en charge localStorage permettent d'accéder à la fois au site et au contenu de l'iFrame stocké dans localStorage). Cela peut ne pas être réalisable à court terme, car vous et votre site partenaire devez implémenter des informations de sauvegarde/lecture vers/depuis localStorage et tous les navigateurs ne le supportent pas (les anciens navigateurs IE en particulier).

Pour ajouter un en-tête de la politique de base (idéalement, vous devez générer votre propre politique qui est simple - vérifier l'article 2 ci-dessous)

dans php ajouter cette ligne:

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

dans ASP.Net:

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

dans HTML pages:

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

En ce qui concerne vos autres préoccupations:

1)P3P têtes se réfèrent à l'en-tête HTTP qui offre quelque chose appelé un compact policy au navigateur. Sans une telle politique, IE (notamment) et d'autres navigateurs bloqueront l'accès aux cookies tiers (un terme utilisé pour faire référence aux cookies de iFrame) pour protéger les soucis de confidentialité de l'utilisateur.

En ce qui concerne Google Analytics va, à la fois votre site et le site partenaire doit encore configurer cross domain tracking comme indiqué dans la documentation.

2) Vous pouvez utiliser cet en-tête politique de base (ce qui est suffisant pour fixer les cookies de iFrame):

P3P: CP = "CAO PSA NOTRE"

ou générer le tien. Si vous n'êtes pas sûr de la signification de ces termes, voir this.

Pour générer une telle politique, vous pouvez utiliser des éditeurs en ligne tels que p3pedit.com ou IBM tool qui présentent un ensemble de questions et vous permettent de présenter des réponses. Cela vous permet de générer rapidement une telle politique. Vous pouvez générer le policy XML, compact policy et plus.

3) Vous pouvez essayer les deux alternatives mentionnées ci-dessus.

étapes pour ajouter la politique à l'ensemble de votre site

  1. Générez une politique compacte (en utilisant l'un des outils mentionnés plus haut) ou utiliser la politique de base
  2. Dans IIS, clic droit la page, le répertoire ou le site souhaité, puis cliquez sur Propriétés.
  3. Dans l'onglet En-têtes HTTP, cliquez sur Ajouter.
  4. Dans le champ Nom d'en-tête personnalisé, tapez P3P.
  5. Dans le champ Valeur d'en-tête personnalisé, entrez votre stratégie Compact P3P (ou celle de base ci-dessus), puis cliquez sur OK.
  6. Dans Apache, une ligne de mod_header comme celui-ci fera:
Header append P3P "CP=\"CAO PSA OUR\"" 

Espoir ths aide.

+0

Bonne réponse. J'ai remarqué que le CP = "CAO PSA OUR", est généralement suffisant pour contourner la limitation des cookies. – Eduardo

+2

Y a-t-il une raison pour créer le fichier P3P complet autrement que pour adhérer à une spécification dont personne ne se soucie? – Eduardo

+1

La raison de créer un fichier P3P complet serait que vous vous en souciez! :) – Mrchief