martes, 6 de diciembre de 2011

Múltiples llamadas AJAX en CakePHP causa error 403 o logout

Situación:

Desarrollando una aplicación web, tiene un formulario que contenía entre otros elementos una etiqueta SELECT de HTML con varias etiquetas OPTION que al seleccionarlas hace una llamada AJAX (utilizando jQuery) para buscar una información en específica y desplegarla.

Problema:

Cuando haces rápidamente clicks a varias de las etiquetas OPTION, lo que resulta en varias llamadas AJAX simultáneas, la primera llamada es procesada y la segunda y/o posteriores dan un error 403, y si tienes activado un módulo de seguridad te devolverá la página de login.

Solución:

Luego de Googlear la solución y leer foros encontré que la solución es una modificación bien sencilla, simplemente debes de cambiar el valor de la constante ‘Security.level’ de ‘high’ a ‘medium’ que se encuentra en el archivo ‘/app/config/core.php’.

Explicación:

Cuando configuramos el nivel de seguridad de CakePHP a ‘high’ cada llamada que se realiza entre el cliente al servidor es encriptada con un valor diferente lo cual afecta al reseteo y cambia valor constante de las Cookies de seguridad utilizadas por CakePHP. Cuando reconfiguramos el nivel de seguridad a ‘medium’ la medida ya descrita es pasada por alto.

ShareThis