Comment écrire un cookies dans une iframe ...
En ce moment je suis en train de m'amuser avec des cookies et les iframes, j'avais besoin pour diverses raisons d'utiliser le code ci dessous dans une des pages de MonSite.com
<iframe src="http://www.UnAutreSite.com" style="width:800px; height:600px"></iframe>
UnAutresite.com dispose d'un système d'authentification et je suis bien évidemment loggé dessus, malheureusement dans l'iframe de la page de MonSite.com je n'apparais pas loggué, je lance Fiddler à la recherche d'explication et je constate que les cookies ne sont pas transmis ! Je test par tout hasard avec Firefox et cela fonctionne trés bien ...
Aprés une rapide recherche j'ai trouvé une solution : ASP.NET Resources - Frames, ASPX Pages and Rejected Cookies
Il faut utiliser Privacy Preferences Project (P3P) un projet du W3C
The Platform for Privacy Preferences Project (P3P) enables Websites to express their privacy practices in a standard format that can be retrieved automatically and interpreted easily by user agents. P3P user agents will allow users to be informed of site practices (in both machine- and human-readable formats) and to automate decision-making based on these practices when appropriate. Thus users need not read the privacy policies at every site they visit. Have a look at the list of P3P software.
(P3P: The Platform for Privacy Preferences)
Je ne connaissais pas ce projet du W3C, j'ai essayé d'en savoir un peu plus et voici un article qui essaye d'expliquer le fonctionnement : O'Reilly Network: P3P: Privacy Primer
Je n'ai pas tout compris du fonctionnement de P3P mais en gros à chaque fois que l'on veut écrire un cookie à partir d'une iframe il faut rajouter une en-tête HTTP. J'ai donc modifié UnAutreSite.com avec l'exemple disponible ici : Single-Sign-On Approaches for AppExchange User Authentication
Response.AddHeader("p3p", "CP=""IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT""")
Désormais je suis loggué sur UnAutreSite.com dans l'iframe de MonSite.com et cela fonctionne avec Internet Eplorer, Firefox et Opera :-)