respeta para pagina navegadores internet habilitar funciona compatibilidad codigo bien internet-explorer cookies iframe

internet-explorer - para - internet explorer no respeta css



La cookie no se envĂ­a en iframe en IE9 (4)

En primer lugar, investigué antes de publicar esta pregunta, así que sé acerca de la Política P3P y el artículo de MSDN al respecto. Por lo que entiendo, esta política en su mayoría (si no solo) se aplica a IE6. Mi problema específico es con IE9. Además, lo primero que hice fue establecer una política (y funciona, ya que muestra un resumen en el informe de privacidad de IE).

Mi caso de prueba es el siguiente: Tengo una página que contiene un iframe. El documento iframe establece una cookie de sesión (el encabezado HTTP completo: Set-Cookie:sid=2b5540e0e4f27075ca4709851700137d; expires=Tue, 28-Jun-2011 07:27:41 GMT; path=/ ), para el dominio actual, en la raíz camino, que expira en una semana. No hay problemas allí, esto ha estado funcionando en producción (independiente, no en un iframe) desde hace algún tiempo.

El problema es este: el documento iframe tiene algún javascript que hace primero algunas solicitudes HTTP (hecho por jQuery), luego redirige al usuario (al cambiar la propiedad document.location ). Las solicitudes envían las cookies, pero el redireccionamiento no .

He capturado los eventos de red en IE, y la única diferencia entre los dos tipos de solicitudes que puedo encontrar es el iniciador: XHR es realizado por una biblioteca JS y el otro por clic. Sin embargo, realmente dudo que un clic no envíe la cookie.

Quiero saber por qué mis cookies no se envían, las cookies de Google Analytics se envían, por lo que debería ser posible.

ACTUALIZACIÓN: Definitivamente es un problema de la zona de privacidad: al disminuir la configuración de la barra de privacidad en IE para todos, funciona. Cualquier otro ajuste falla.

Creé un banco de pruebas exacto : este es el iframe real que se está utilizando. Para probarlo, debe completar un código postal holandés (lo siento;)), el marcador de posición que se está usando está bien: 1234 AB y 1. Después de enviarlo, obtendrá un modal, cuando lo haya hecho, deberá ser redirigido a una página de resultados. En IE, la redirección muestra exactamente la misma página con la que comenzó (debido a que no configuró la cookie).



¿Has intentado agregar el encabezado P3P? No es tan difícil como dice el artículo.

Por ejemplo, en PHP simplemente agregue este encabezado en la parte superior del archivo php:

<?php header(''p3p: CP="NOI ADM DEV PSAi COM NAV OUR OTR STP IND DEM"''); ?>

Este problema exacto pero en un contexto diferente funcionó aquí: la aplicación de Facebook funciona en todos los navegadores pero no en IE8.


¿Se trata de la secuencia en la que se generan las cookies, es decir, si la cookie GA existe antes de que se cargue el iframe, pero la cookie de sesión se establece cuando se carga?

¿Dónde está el código?

cambiando la propiedad document.location

¿Está asignando un valor directamente al objeto de ubicación, o está utilizando location.replace () o location.href = ...?


Si alguien está tratando de resolver esto para una aplicación .NET

Agregue un encabezado P3P como Carlos mencionó

HttpContext.Response.AddHeader("p3p", "CP=/"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT/"");

Editar: Aún mejor, si quieres poner esto en el controlador, simplemente agrega el siguiente atributo

public class IEP3PHeaderAttribute : FilterAttribute, IResultFilter { public void OnResultExecuting(ResultExecutingContext filterContext) { // check if the user is using a IE based browser, add a p3p header if true and hasn''t already been added if (HttpContext.Current.Request.Browser.Browser.ToUpper().Contains("IE")) { if (System.Web.HttpContext.Current.Response.Headers["p3p"] == null) { HttpContext.Current.Response.AddHeader("p3p", "CP=/"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT/""); } } } public void OnResultExecuted(ResultExecutedContext filterContext) { } }

y luego en su controlador, por ejemplo, HomeController

[IEP3PHeader] public class HomeController { public ActionResult DoSomething() {}; public ActionResult DoSomethingElse() {}; }