Internet Explorer bloque les cookies des pages dans les IFrames

Publié dans: 

 

L’une des applications Web développées par IP-TECH pour le compte de l’un de ses partenaires a eu un tel succès auprès des utilisateurs que certains éditeurs de solutions d’entreprises se sont intéressés à l’intégrer à leurs produits sous différentes formes. L’un d’entre eux a opté pour l’intégration du produit à l’intérieur d’une IFrame dans leur solution.

Tout un travail de spécification a commencé pour définir :

  • les nouveaux besoins pour pouvoir adapter le produit à leurs clients;
  • les interfaces et les flux d’échange entre les deux solutions.

Dès que les premières phases de développements sont finies, nous avons commencé les premiers tests d'intégration. Premier constat: Aucune variable de session n'est sauvegardée. La raison est que nous testions avec Internet Explorer, qui depuis sa version 6, bloque les cookies contenus dans les en-têtes HTTP se chargeant à l’intérieur d’IFrame.

En effet, IE implémente ce qu’on appelle la “Platform for Privacy Preferences” ou P3P. P3P est un standard W3C qui permet aux sites Web de définir leurs politiques de protection de données personnelles de façon standardisée et structurée compréhensible par les machines (donc les navigateurs implémentant le standard). L’internaute, en définissant les paramètres de confidentialité au niveau de son navigateur, permettra ou pas à ce site web de collecter des informations, d’accepter des cookies…Ce système a beaucoup de limites qui ne font pas l’objet de ce post. On s’intéresse plutôt à résoudre la problématique : comment faire si votre application web est contrainte de tourner dans une IFrame ?

Vous l’avez donc compris, la configuration par défaut au niveau d’IE bloquera votre cookie si vous vous ne déclarez pas en tant que site de confiance. Selon les spécifications, votre politique P3P peut être communiquée sous deux formes : la forme compacte et la forme complète. La forme complète implique la description de la politique sous format XML, décrite dans un fichier que les navigateurs implémentant le standard iront chercher sous w3c/p3p.xml (emplacement par défaut pouvant être redéfini avec une balise link). La forme compacte implique la description de la politique en envoyant un entête HTTP (associé à la réponse avec laquelle vous essayez d’envoyer le cookie). La clé de cette entête est : “P3P”. Sa valeur est une succession de codes abrégés. Sans rentrer dans les détails de ces codes bien expliqués dans les spécifications, pour permettre à IE d’accepter vos cookies même si votre site web se charge à l’intérieur d’une IFrame, la valeur de cet entête devrait être : CP=”IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT”.

Exemple : Si vous développez une application web Java, pour ajouter cet entête dans une JSP, il faudrait ajouter la ligne suivante :

<% response.addHeader("P3P","CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\""); %>