Non so se avete mai provato a far girare un’applicazione asp.net che ha assoluta necessità di usare i cookie dentro un iframe di un sito di un dominio diverso (non chiedetemi perchè ma a volte serve).
Una cosa così in pratica:
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>TEST - IFRAME</title> </head> <body> <a href="http://sito1test">http://sito1test</a> </body> </html>
dove “http://sito1test” è la vostra applicazione che DEVE usare i cookies. Provate e aprite la pagina con Firefox o Chrome e funziona tutto perfettamente.
Come ulteriore scrupolo aprite la stessa pagina con Internet Explorer e “stranamente” non funziona nulla… in pratica Internet Explorer ha come protezione “aggiuntiva” il blocco di accettare cookie da domini di siti terzi se inseriti in un iframe. Beh potrebbe essere anche giusto.
Come si risolve? La risposta è la Platform for Privacy Preferences, o P3P cioè un protocollo per dichiarare quali tipi di informazioni vengono condivise e memorizzate, interessante no?
Vi leggete tutta la documentazione a riguardo, capite cosa sono i vari simboli usati e poi prendete la vostra applicazione dotnet “http://sito1test” e aprite il file “Global.asax”, quindi dentro alla funzione
[csharp]protected void Application_BeginRequest(object sender, EventArgs e)[/csharp]
inserite il comandino per aggiungere la direttiva a tutte le pagine:
[csharp]HttpContext.Current.Response.AddHeader(“p3p”,
“CP=”IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT””);[/csharp]
FUNZIONA! MAGNIFICO!
Benissimo, ma visto che vi piace capire le cose fate un’ultima prova prima di dichiarare vinta la battaglia di dare un “+1” a IE, sostituite la direttiva di cui sopra con:
[csharp]HttpContext.Current.Response.AddHeader(“p3p”, “CP=”mia nonna in carriola””);[/csharp]
FUNZIONA LO STESSO! (ATTIMO DI PANICO) poi vi ricordate che stiamo parlando SOLO di Internet Explorer e passate ad altro.