Je l'ai fait fonctionner, mais la solution est un peu complexe, alors restez avec moi.
Que ce passe-t-il
En l'état, Internet Explorer accorde un niveau de confiance plus faible aux pages IFRAME (IE appelle ce contenu "tiers"). Si la page à l'intérieur de l'IFRAME n'a pas de politique de confidentialité, ses cookies sont bloqués (ce qui est indiqué par l'icône en forme d'œil dans la barre d'état, lorsque vous cliquez dessus, il vous montre une liste d'URL bloquées).
(source: piskvor.org )
Dans ce cas, lorsque les cookies sont bloqués, l'identifiant de session n'est pas envoyé et le script cible génère une erreur «session introuvable».
(J'ai essayé de définir l'identifiant de session dans le formulaire et de le charger à partir des variables POST. Cela aurait fonctionné , mais pour des raisons politiques, je n'ai pas pu le faire.)
Il est possible de rendre la page à l'intérieur de l'IFRAME plus fiable: si la page intérieure envoie un en-tête P3P avec une politique de confidentialité acceptable pour IE, les cookies seront acceptés .
Comment le résoudre
Créer une politique p3p
Un bon point de départ est le tutoriel W3C . Je l'ai parcouru, téléchargé l' éditeur de politique de confidentialité IBM et là j'ai créé une représentation de la politique de confidentialité et lui ai donné un nom pour y faire référence (ici c'étaitpolicy1
).
REMARQUE : à ce stade, vous devez réellement savoir si votre site a une politique de confidentialité, et sinon, la créer - s'il collecte des données utilisateur, quel type de données, ce qu'il en fait, qui y a accès, etc. Vous devez trouver ces informations et y réfléchir . Gifler ensemble quelques balises ne le coupera pas.Cette étape ne peut pas être effectuée uniquement par logiciel et peut être très politique (par exemple, "devrions-nous vendre nos statistiques de clics?").
(par exemple, "le site est exploité par ACME Ltd., il utilise des identifiants anonymes par session pour son fonctionnement, recueille des données utilisateur uniquement si cela est explicitement autorisé et uniquement aux fins suivantes, les données ne sont stockées que le temps nécessaire, uniquement notre société y a accès, etc. etc. ").
(Lors de l'édition avec cet outil, il est possible de voir les erreurs / omissions dans la politique. L'onglet "Politique HTML" est également très utile: en bas, il a une "Évaluation de la politique" - une vérification rapide si la politique sera bloquée par les paramètres par défaut d'IE)
L'éditeur exporte vers un fichier .p3p, qui est une représentation XML de la stratégie ci-dessus. En outre, il peut exporter une "version compacte" de cette stratégie.
Lien vers la politique
Ensuite, un fichier de référence de politique ( http://example.com/w3c/p3p.xml
) était nécessaire (un index des politiques de confidentialité que le site utilise):
<META>
<POLICY-REFERENCES>
<POLICY-REF about="/w3c/example-com.p3p#policy1">
<INCLUDE>/</INCLUDE>
<COOKIE-INCLUDE/>
</POLICY-REF>
</POLICY-REFERENCES>
</META>
Le <INCLUDE>
affiche tous les URI qui utiliseront cette politique (dans mon cas, l'ensemble du site). Le fichier de stratégie que j'ai exporté à partir de l'éditeur a été téléchargé surhttp://example.com/w3c/example-com.p3p
Envoyer l'en-tête compact avec les réponses
J'ai configuré le serveur Web sur example.com pour envoyer l'en-tête compact avec des réponses, comme ceci:
HTTP/1.1 200 OK
P3P: policyref="/w3c/p3p.xml", CP="IDC DSP COR IVAi IVDi OUR TST"
// ... other headers and content
policyref
est un URI relatif au fichier de référence de politique (qui à son tour fait référence aux politiques de confidentialité), CP
est la représentation de politique compacte. Notez que la combinaison d'en-têtes P3P dans l'exemple peut ne pas être applicable sur votre site Web spécifique; vos en-têtes P3P DOIVENT véritablement représenter votre propre politique de confidentialité!
Profit!
Dans cette configuration, le Evil Eye n'apparaît pas, les cookies sont enregistrés même dans l'IFRAME et l'application fonctionne.
Modifier: ce qu'il ne faut pas faire, sauf si vous aimez vous défendre contre les poursuites
Plusieurs personnes ont suggéré de "simplement insérer quelques balises dans votre en-tête P3P, jusqu'à ce que le mauvais œil abandonne".
Les balises ne sont pas seulement un tas de bits, elles ont une signification réelle et leur utilisation vous donne des responsabilités réelles !
Par exemple, prétendre que vous ne collectez jamais de données utilisateur peut rendre le navigateur heureux, mais si vous collectez réellement des données utilisateur, le P3P est en conflit avec la réalité. Clairement et simplement, vous mentez délibérément à vos utilisateurs , et cela peut être un comportement criminel dans certains pays. Comme dans «aller en prison, ne pas percevoir 200 $».
Quelques exemples ( voir p3pwriter pour l'ensemble complet des balises ):
- NOI : "Le site Web ne recueille pas de données identifiées." (dès qu'il y a une personnalisation, une connexion ou toute collecte de données (***** Analytics, n'importe qui?), vous devez le reconnaître dans votre P3P)
- STP : Les informations sont conservées pour répondre à l'objectif déclaré. Cela nécessite que les informations soient rejetées le plus tôt possible. Les sites DOIVENT avoir une politique de rétention qui établit un calendrier de destruction. La politique de rétention DOIT être incluse ou liée à partir de la politique de confidentialité lisible par l'homme du site. "(Donc si vous envoyez
STP
mais n'avez pas de politique de rétention, vous risquez de commettre une fraude. C'est cool? Pas du tout.)
Je ne suis pas avocat, mais je ne suis pas prêt à aller en justice pour voir si l'en-tête P3P est vraiment juridiquement contraignant ou si vous pouvez promettre quoi que ce soit à vos utilisateurs sans réellement vouloir honorer vos promesses.