Ho funzionato, ma la soluzione è un po 'complessa, quindi abbi pazienza.
Cosa sta succedendo
Allo stato attuale, Internet Explorer offre un livello di fiducia inferiore alle pagine IFRAME (IE chiama questo contenuto "di terze parti"). Se la pagina all'interno di IFRAME non ha una politica sulla privacy, i suoi cookie sono bloccati (che è indicato dall'icona a forma di occhio nella barra di stato, quando fai clic su di essa, ti mostra un elenco di URL bloccati).
(fonte: piskvor.org )
In questo caso, quando i cookie vengono bloccati, l'identificatore di sessione non viene inviato e lo script di destinazione genera un errore "sessione non trovata".
(Ho provato a impostare l'identificatore di sessione nel modulo e a caricarlo dalle variabili POST. Ciò avrebbe funzionato , ma per motivi politici non sono riuscito a farlo.)
È possibile rendere più attendibile la pagina all'interno di IFRAME: se la pagina interna invia un'intestazione P3P con una politica sulla privacy accettabile per IE, i cookie saranno accettati .
Come risolverlo
Crea una politica p3p
Un buon punto di partenza è il tutorial W3C . L'ho esaminato, scaricato IBM Privacy Policy Editor e lì ho creato una rappresentazione dell'informativa sulla privacy e le ho dato un nome a cui fare riferimento (eccolo qui policy1
).
NOTA : a questo punto, devi effettivamente scoprire se il tuo sito ha una politica sulla privacy e, in caso contrario, crearlo - se raccoglie i dati dell'utente, che tipo di dati, che cosa fa con esso, chi ha accesso ad esso, ecc. Devi trovare queste informazioni e pensarci . Basta schiaffeggiare alcuni tag non lo taglierà. Questo passaggio non può essere eseguito esclusivamente nel software e può essere altamente politico (ad esempio "dovremmo vendere le nostre statistiche sui clic?").
(ad es. "il sito è gestito da ACME Ltd., utilizza identificatori anonimi per sessione per il suo funzionamento, raccoglie i dati degli utenti solo se esplicitamente consentito e solo per i seguenti scopi, i dati vengono archiviati solo per il tempo necessario, solo la nostra azienda ha accesso ad esso, ecc. ecc. ").
(Durante la modifica con questo strumento, è possibile visualizzare errori / omissioni nella politica. Molto utile è anche la scheda "Politica HTML": in fondo, ha una "Valutazione politica" - un rapido controllo se la politica sarà bloccata dalle impostazioni predefinite di IE)
L'Editor esporta in un file .p3p, che è una rappresentazione XML della politica di cui sopra. Inoltre, può esportare una "versione compatta" di questo criterio.
Link alla politica
Quindi http://example.com/w3c/p3p.xml
era necessario un file di riferimento delle politiche ( ) (un indice delle politiche sulla privacy utilizzate dal sito):
<META>
<POLICY-REFERENCES>
<POLICY-REF about="/w3c/example-com.p3p#policy1">
<INCLUDE>/</INCLUDE>
<COOKIE-INCLUDE/>
</POLICY-REF>
</POLICY-REFERENCES>
</META>
Gli <INCLUDE>
spettacoli tutti gli URI che utilizzeranno questa politica (nel mio caso, l'intero sito). Il file della politica che ho esportato dall'editor è stato caricatohttp://example.com/w3c/example-com.p3p
Invia l'intestazione compatta con le risposte
Ho impostato il server web su example.com per inviare l'intestazione compatta con risposte, in questo modo:
HTTP/1.1 200 OK
P3P: policyref="/w3c/p3p.xml", CP="IDC DSP COR IVAi IVDi OUR TST"
// ... other headers and content
policyref
è un URI relativo al file di riferimento della politica (che a sua volta fa riferimento alle politiche sulla privacy), CP
è la rappresentazione compatta della politica. Si noti che la combinazione di intestazioni P3P nell'esempio potrebbe non essere applicabile al proprio sito Web specifico; le intestazioni P3P DEVONO rappresentare in modo veritiero la tua politica sulla privacy!
Profitto!
In questa configurazione, Evil Eye non viene visualizzato, i cookie vengono salvati anche nell'IFRAME e l'applicazione funziona.
Modifica: cosa NON fare, a meno che non ti piaccia difendersi da azioni legali
Diverse persone hanno suggerito "basta schiaffeggiare alcuni tag nell'intestazione P3P, finché Evil Eye non si arrende".
I tag non sono solo un mucchio di bit, hanno significati nel mondo reale e il loro uso ti dà responsabilità nel mondo reale !
Ad esempio, fingere di non raccogliere mai i dati degli utenti potrebbe rendere felice il browser, ma se si raccolgono effettivamente i dati degli utenti, il P3P è in conflitto con la realtà. Chiaro e semplice, stai mentendo intenzionalmente ai tuoi utenti e questo potrebbe essere un comportamento criminale in alcuni paesi. Come in "vai in galera, non raccogliere $ 200".
Alcuni esempi ( vedi p3pwriter per l'intero set di tag ):
- NOI : "Il sito Web non raccoglie dati identificati". (non appena ci sono personalizzazioni, accessi o raccolte di dati (***** Analytics, chiunque?), devi riconoscerlo nel tuo P3P)
- STP : le informazioni vengono conservate per soddisfare lo scopo dichiarato. Ciò richiede che le informazioni vengano scartate al più presto possibile. I siti DEVONO avere una politica di conservazione che stabilisce un calendario per la distruzione. La politica di conservazione deve essere incluso in o collegati a norme sulla privacy leggibile del sito."(Quindi se inviare
STP
, ma non hanno un criterio di conservazione, si può commetterebbe frode. Come fresco è che? Niente affatto.)
Non sono un avvocato, ma non sono disposto ad andare in tribunale per vedere se l'intestazione P3P è davvero legalmente vincolante o se puoi promettere qualcosa ai tuoi utenti senza realmente voler onorare le tue promesse.