php - success - Internet Explorer 8 no pasa la cookie de sesión para la solicitud ajax
get cookie from ajax request (5)
Tengo una aplicación php simple, funciona en todos los navegadores excepto en IE8 beta 2, el problema ocurre cuando trato de actualizar el campo de la tabla usando la llamada Ajax (método de publicación jQuery). Al utilizar el depurador IE8, descubro que IE8 no envía cookies de sesión, por lo que los scripts de php redirigen a la página de inicio de sesión en lugar de ejecutar la acción solicitada.
¿Qué puedo hacer para que esto funcione?
Editar: No mencioné que estaba usando Code Igniter, así que resolví este problema al reemplazar la implementación predeterminada de la sesión de Code Igniter por una nativa. La implementación de sesión predeterminada de encendedor de código utiliza cookies para almacenar todos los datos.
Como solución alternativa, puede insertar el SessionID como parámetro en el uri.
Vea la identificación de la sesión que pasa en el manual php.
No tengo IE8, pero su cookie podría estar bloqueada por las extrañas políticas de seguridad de Internet Explorer. Una posible solución puede ser emplear P3P (que también es el método para que las cookies funcionen dentro de un IFRAME).
Generar la política correcta de P3P puede ser un poco laboriosa, pero debería poder encontrar la información que necesita en http://www.p3ptoolbox.org/
Tuve el mismo problema en IE8 RC1:
1) un usuario va a la página de inicio de sesión y se establece una cookie de sesión en blanco
2) El usuario inicia sesión y se establece una cookie de sesión validada y javascript abre una nueva ventana y cierra la ventana actual.
3) Se abre la nueva ventana y contiene una cookie de sesión en blanco.
4) El usuario es redirigido a la página de inicio de sesión
Cambié el paso 1 para que no se configurara la cookie en blanco; solo envío la cookie de sesión si ha sido validada. Esto solucionó el problema para mí.
Tengo problemas para lograr que IE8 use los certificados SSL (PK12) como medio de autorización. Si deseo proteger un directorio y forzar que un certificado web coincidente esté presente en el navegador antes de otorgar acceso. Funciona bien con IE7 y todas las versiones de Mozilla, simplemente no es IE8. Ha dejado inútil el sistema de dictado de mi esposa. Otra cosa que noté es que cuando establece la cookie PHPSESSID, lista el dominio como .net y no como mydomain.net.
Ayer tuve un problema similar y encontré la solución. Espero que esto ayude a alguien más también.
Problema: Supongamos que hay un sitio web www.somewebsite.com e IFRAME dentro de él que carga el archivo php de mi servidor, www.myserver.com/welcome.php . El sitio web se estaba cargando correctamente, así como mi página de bienvenida y mostraba algo así como "Hola Bob", por lo que encontró al usuario y lo conectó correctamente.
Posteriormente, mi JavaScript realizaba llamadas AJAX a otro archivo PHP, y la respuesta estaba en un estado "no autorizado", por lo que los datos de SESSION faltaban por completo. Después de actualizar la página, todo funcionaba correctamente. ¡Y esto sucedía solo bajo IE8!
Pensé que el problema estaba en enviar cookies de sesión al servidor, pero cuando instalé Fiddler , descubrí que IE8 enviaba cookies así como PHPSESSID correctamente, pero el servidor era incapaz de detectar el objeto SESSION correcto. Otra cosa extraña fue que el segundo servidor envió el siguiente encabezado:
P3P: CP = "IDC DSP COR ADM DEVi TAI PSA PSD IVA IVDi CONI NUESTRO IND CNT"
pero la primera vez no Después de agregar ese encabezado manualmente en el script PHP, ¡todo funcionó como un amuleto!
Luego, cuando busqué en Google ese "p3p abracadabra", encontré el siguiente sitio web:
http://adamyoung.net/IE-Blocking-iFrame-Cookies
Conclusión: asegúrese de estar enviando el encabezado en cada página que establece una cookie.
Y esto no solo está relacionado con la combinación de IE8 + PHP , el mismo problema ocurre en el caso de IE8 + ASP.NET , IE8 + JSP , etc.