Lo puse a trabajar, pero la solución es un poco compleja, así que tengan paciencia conmigo.
Qué esta pasando
Tal como están las cosas, Internet Explorer otorga un nivel de confianza más bajo a las páginas IFRAME (IE llama a este contenido "de terceros"). Si la página dentro del IFRAME no tiene una Política de privacidad, sus cookies están bloqueadas (lo cual se indica mediante el icono del ojo en la barra de estado, cuando hace clic en él, le muestra una lista de URL bloqueadas).
(fuente: piskvor.org )
En este caso, cuando se bloquean las cookies, el identificador de sesión no se envía y el script de destino arroja un error 'sesión no encontrada'.
(Intenté configurar el identificador de sesión en el formulario y cargarlo desde las variables POST. Esto hubiera funcionado , pero por razones políticas no pude hacerlo).
Es posible hacer que la página dentro del IFRAME sea más confiable: si la página interna envía un encabezado P3P con una política de privacidad que sea aceptable para IE, se aceptarán las cookies .
Cómo resolverlo
Crear una política p3p
Un buen punto de partida es el tutorial del W3C . Lo revisé, descargué el Editor de políticas de privacidad de IBM y allí creé una representación de la política de privacidad y le di un nombre para hacer referencia a ella (aquí estaba policy1
).
NOTA : en este punto, en realidad necesita saber si su sitio tiene una política de privacidad y, de no ser así, crearla: si recopila datos del usuario, qué tipo de datos, qué hace con ellos, quién tiene acceso a ellos, etc. Necesita encontrar esta información y pensar en ello. Simplemente golpeando unas pocas etiquetas no será suficiente. Este paso no se puede realizar únicamente en software y puede ser muy político (por ejemplo, "¿deberíamos vender nuestras estadísticas de clics?").
(por ejemplo, "el sitio es operado por ACME Ltd., utiliza identificadores anónimos por sesión para su funcionamiento, recopila datos de usuario solo si está explícitamente permitido y solo para los siguientes propósitos, los datos se almacenan solo el tiempo que sea necesario, solo nuestra empresa tiene acceso a él, etc. etc. ").
(Al editar con esta herramienta, es posible ver errores / omisiones en la política. También es muy útil la pestaña "Política HTML": en la parte inferior, tiene una "Evaluación de política" - una verificación rápida si la política será bloqueada por la configuración predeterminada de IE)
El Editor exporta a un archivo .p3p, que es una representación XML de la política anterior. Además, puede exportar una "versión compacta" de esta política.
Enlace a la política
Luego http://example.com/w3c/p3p.xml
se necesitaba un archivo de referencia de política ( ) (un índice de políticas de privacidad que usa el sitio):
<META>
<POLICY-REFERENCES>
<POLICY-REF about="/w3c/example-com.p3p#policy1">
<INCLUDE>/</INCLUDE>
<COOKIE-INCLUDE/>
</POLICY-REF>
</POLICY-REFERENCES>
</META>
Los <INCLUDE>
espectáculos de todos los URI que utilizarán esta política (en mi caso, todo el sitio). El archivo de política que exporté del Editor se cargó enhttp://example.com/w3c/example-com.p3p
Enviar el encabezado compacto con respuestas
He configurado el servidor web en example.com para enviar el encabezado compacto con respuestas, como esta:
HTTP/1.1 200 OK
P3P: policyref="/w3c/p3p.xml", CP="IDC DSP COR IVAi IVDi OUR TST"
// ... other headers and content
policyref
es un URI relativo al archivo de referencia de políticas (que a su vez hace referencia a las políticas de privacidad), CP
es la representación compacta de políticas. Tenga en cuenta que la combinación de encabezados P3P en el ejemplo puede no ser aplicable en su sitio web específico; ¡Sus encabezados P3P DEBEN representar sinceramente su propia política de privacidad!
¡Lucro!
En esta configuración, Evil Eye no aparece, las cookies se guardan incluso en el IFRAME y la aplicación funciona.
Editar: Qué NO hacer, a menos que te guste defenderte de los juicios
Varias personas han sugerido "simplemente colocar algunas etiquetas en su encabezado P3P, hasta que Evil Eye se rinda".
¡Las etiquetas no son solo un montón de bits, tienen significados del mundo real y su uso le otorga responsabilidades en el mundo real !
Por ejemplo, fingir que nunca recopila datos de usuario puede hacer feliz al navegador, pero si realmente recopila datos de usuario, el P3P está en conflicto con la realidad. Claro y simple, estás mintiendo a propósito a tus usuarios , y eso podría ser un comportamiento criminal en algunos países. Como en "ir a la cárcel, no cobrar $ 200".
Algunos ejemplos ( ver p3pwriter para el conjunto completo de etiquetas ):
- NOI : "El sitio web no recopila datos identificados". (en cuanto haya personalización, inicio de sesión o recopilación de datos (***** Analytics, ¿alguien?), debe reconocerlo en su P3P)
- STP : la información se retiene para cumplir con el propósito establecido. Esto requiere que la información se descarte lo antes posible. Los sitios DEBEN tener una política de retención que establezca un calendario de destrucción. La política de retención DEBE incluirse o vincularse desde la política de privacidad legible por humanos del sitio "(así que si envía
STP
pero no tiene una política de retención, puede estar cometiendo fraude. ¿Qué tan genial es eso?
No soy abogado, pero no estoy dispuesto a ir a la corte para ver si el encabezado P3P es realmente legalmente vinculante o si puede prometerle algo a sus usuarios sin estar realmente dispuesto a cumplir sus promesas.