2009-01-27 16 views
6

Tengo una aplicación php simple, funciona en todos los navegadores excepto en IE8 beta 2, el problema ocurre cuando intento actualizar el campo de la tabla usando la llamada Ajax (método jQuery post). 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.Internet Explorer 8 no pasa la cookie de sesión para la solicitud ajax

¿Qué puedo hacer para que esto funcione?

Edit: No he mencionado que estaba usando Code Igniter, así que he resuelto 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.

+0

¿Se IE 8 enviar el cookie en la solicitud normal? – Gumbo

+0

Por petición normal funciona bien, pero después de la solicitud ajax borra la cookie. –

+1

La implementación de la sesión de CodeIgniter apesta –

Respuesta

-3

Como solución alternativa, puede insertar el ID de sesión como un parámetro en el uri.

Ver passing session id en el manual php.

5

No tengo IE8, pero su cookie puede estar bloqueada por las extrañas políticas de seguridad de Internet Explorer. Una posible solución alternativa puede ser emplear P3P (que también es el método para que las cookies funcionen dentro de un IFRAME).

Generación de la política P3P adecuado puede ser un poco de trabajo, pero usted debería ser capaz de encontrar la información que necesita en http://www.p3ptoolbox.org/

0

que tenía 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

he cambiado el paso 1 para que el blanco de la galleta no se ha establecido - Sólo envía la cookie de sesión si su sido validados. Esto solucionó el problema para mí.

0

Tengo problemas para conseguir 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 hecho que el sistema de dictado de mi esposa sea inútil. Otra cosa que noté es que cuando establece la cookie PHPSESSID, lista el dominio como .net y no como mydomain.net.

8

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 y IFRAME dentro de él lo que se agradece carga de archivos 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ó.

Después mi JavaScript estaba haciendo llamadas AJAX a otro archivo PHP, y la respuesta fue amable de 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 era con el envío de cookies de sesión al servidor, pero cuando instalé Fiddler, encontré 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 envió segundo servidor de hora siguiente encabezado:

P3P: CP = "IDC DSP COR ADM Devi Taii PSA PSD Ivai IVDi CONI SU NUESTRO IND CNT"

pero la primera vez no. Después de agregar ese encabezado manualmente en el script PHP, ¡todo funcionó como un amuleto!

Entonces, cuando busqué en Google que "abracadabra P3P", encontré siguiente sitio web:

http://adamyoung.net/IE-Blocking-iFrame-Cookies

Conclusión: Asegúrese de que usted está enviando el encabezado en cada página que establece una cookie .

Y esto no es solamente relacionada con IE8 + PHP combinación, el mismo problema ocurre en el caso de IE8 + ASP.NET, IE8 + JSP, etc.

+0

esta fue la solución para mi solicitud de dominio no marco jsonp que no enviaba cookies. gracias! – changokun

Cuestiones relacionadas