Hola,
Hace unos días venimos experimentando un problema que antes no teníamos en una personalización que hice.
Empezamos a recibir reclamos de algunos usuarios que usando el sistema se encontraban con que de repente clickeaban en algún evento y los llevaba a una pantalla en blanco que dice “Error interno”.
Hace un rato me di cuenta que esto ocurre despues de haber clickeado en un evento en particular que tiene como acción predefinida un vínculo. Este vínculo lleva a un php plano que permite la descarga de un archivo que previamente subió el usuario.
Es decir, no falla el vínculo que permite bajar el archivo, sino que LUEGO de haber usado el vínculo, si quiero realizar cualquier otra operación, como cambiar de tab o clickear en cualquier otro evento, me lleva a la pantalla de “error interno”.
Esta funcionalidad no daba este problema hasta hace unas semanas, y no hicimos cambios sobre la misma por lo que me desconcierta un poco, y lo único con lo que puedo asociarlo es con que hace muy poco actualizamos la versión de guarani de 3.11 a 3.12, y con ello también la versión de toba, a 2.7.
Adjunto una imagen donde pueden ver como está configurado el evento para la descarga del archivo.
El siguiente es el código para la descarga:
function descarga_archivo($path_archivo, $nombre_descarga)
{
if (substr($path_archivo,0,4)=='http')
{
$fileSize = array_change_key_case(get_headers($path_archivo, 1),CASE_LOWER);
if ( strcasecmp($fileSize[0], 'HTTP/1.1 200 OK') != 0 ) { $fileSize = $fileSize['content-length'][1]; }
else { $fileSize = $fileSize['content-length']; }
} else { $fileSize = @filesize($path_archivo); }
header("Pragma: public");
$ctype = mime_content_type($path_archivo);
header("Content-Type: $ctype");
header("Content-Disposition: attachment; filename=\"".basename($nombre_descarga)."\";" );
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".$fileSize);
readfile("$path_archivo");
exit();
}
// $path = ...
// $nombre_original = ...
descarga_archivo($path, $nombre_original);
El error que me aparece en los logs es :
web_1 |
toba_error_seguridad: Error Interno Request Invalido
[TRAZA]exception 'toba_error_seguridad' with message 'Error Interno' in /var/local/gestion/lib/toba/php/nucleo/toba_nucleo.php:541
Stack trace:
#0 /var/local/gestion/lib/toba/php/nucleo/toba_nucleo.php(76): toba_nucleo->verificar_pedido_post()
#1 /var/local/gestion/www/aplicacion.php(27): toba_nucleo->acceso_web()
#2 {main}, referer: http://10.26.0.243:3000/guarani/3.10/aplicacion.php?ah=st57d1b13f37f0e3.13460987&ai=guarani||abm_grupos_oferta_examen
Tienen idea por donde puedo encarar una solución? porque estoy totalmente perdido con esto.
Editado: Encontré un workaround!
Si le tildo la opción de “Vínculo - es popup” , deja de suceder. Aún así no entiendo porque ocurre. Imagino que debe tener que ver con la toba::memoria(), pero no entiendo que cambió para que esto empiece a suceder.
Saludos y gracias desde ya