Este es uno de los problemas/bugs más raros con los que me he topado en años, y puede llegar a ser desesperante. Si has llegado aquí a través de una búsqueda de Google porque tienes el problema que indico en el título del post, estoy seguro de que me vas a dejar una nota de agradecimiento por el consejo :-)

Hace unos días hicimos una nueva plantilla estética para un cliente de nuestra plataforma de e-Learning, SELF. La plataforma tiene un sistema muy potente de plantillas estéticas que permite personalizar mucho la estética y parte de la funcionalidad de la interfaz. Se pueden asociar plantillas a los diferentes campus (entornos cerrados de formación) y también se pueden asignar muchas plantillas/fachadas diferentes a cada campus de forma que se pueda acceder con aspectos diferentes para cada cliente al mismo campus a través de diferentes URLs o directorios virtuales.

Una de estas plantillas, preciosa por cierto, provocaba un extraño efecto sobre todas y cada una de las páginas de la plataforma: se enviaban dos veces. Daba igual que pulsaras sobre un enñace, enviaras un formulario o simplemente llamaras a una página desde la barra de direcciones del navegador: TODAS las páginas se cargaban dos veces. Lo peor del asunto es que, cuando se enviaba un formlario, el primer envío del mismo era normal, pero el segundo y misterioso de ellos, se enviaba sin valor alguno, por lo que se producían excepciones constantemente debido a falta de los parámetros apropiados.

Esta doble petición de páginas no es muy evidente porque se suceden de forma rapidísima. De hecho no nos dimos cuenta de que esto era lo que estaba pasando hasta que analizamos el tráfico entre el navegador y el servidor usando Fiddler. Con esta herramienta detectamos que se estaba produciendo este doble envío de las páginas, lo que fué un avance, pero por más que revisábamos el código del servidor y las cabeceras no veíamos nada que pudiera estar provocándolo.

Cambiando la plantilla no pasaba, por lo que era evidente que había algo en ésta que lo estaba provocando. ¿Pero el qué? No había script con código de navegación, no había directivas de redirección, los archivos auxiliares (CSS, imágenes, etc...) existían todos por lo que tampoco era nuestra página de gestión de errores 404 la que podía estar interfiriendo...

?¿?¿?¿?

La solución

Tras analizar a fondo el código HTML de la página a ver qué encontrábamos vimos lo siguiente en una tabla:

<table border="0" cellpadding="5" cellspacing="0" background="#EFEFEF" width="100%">

¿Ves algo raro en ella?

Nosotros al principio tampoco. El fallo está en el atributo para establecer el color de fondo. El atributo background se usa para establecer la imagen de fondo de la tabla, pero no el color de fondo. Resulta que todos los navegadores importantes tienen un extraño comportamiento con esta etiqueta y es que cuando se introduce algo en ella que no es la ruta de una imagen provoca que se solicite nuevamente la página al servidor. Alucinante. Pasa tanto en Internet Explorer (cualquier versión, incluso la 8.0) y en Firefox (lo mismo), y no lo probamos en otros pero seguramente pasará también.

La solución fué fácil: utilizar el atributo correcto para el color de fondo, bgcolor.

Pero claro, para llegar a aislar el problema y llegar a esta conclusión tuvimos que perder varias horas ya que la plantilla tenía muchísimas líneas de código pues era bastante compleja.

Esta es una de esas cosas raras de narices que aprendes con la experiencia y que no puedes encontrar en un curso o un libro :-(

Espero que leer este post te ahorre horas de frustración :-)

💪🏻 ¿Este post te ha ayudado?, ¿has aprendido algo nuevo?
Pues NO te pido que me invites a un café... Te pido algo más fácil y mucho mejor

Escrito por un humano, no por una IA