Bug o feature?

Hola gente!

Se nos da el caso de que tenemos un combo, el cual le cargamos datos via ajax. En FF funciona de lo mas bien, pero en Chrome/Chromium falla al hacer un submit. Puntualmente:

[ERROR][toba] toba_error_seguridad: Error Interno El ef 'id_catalogo_bien_servicio' no posee a la opción '5834' entre las enviadas

La duda pasa por saber si esto puede suceder porque no se esté dando soporte a este navegador… o si se debe a un bug en el JS.

PD: como pecularidad, o fruto de mi desconocimiento de Toba, cuando el guardar falla el combo queda con el id __fila___ef_form_109000012_form_copiar_catalogoid_catalogo_bien_servicio

Hola Sergio,

no se debe a ningun bug, es un control que existe hace bastante por cuestiones de seguridad. Tiene que ver con que no te envien como valido un valor que jamas enviaste al cliente.

Por tanto, si cargan algo via ajax y no dejan registrados esos valores en el servidor… cuando hagan el post… tienen una bonita excepcion.

Fijense en el metodo servicio__cascadas_efs de toba_ei_formulario.php que es el que registra esos valores y los guarda para ver como tienen que hacer.

Lo de que funciona con FF es interesante, esta enviando el valor correcto para ese combo?, puede que este mostrando una pagina en cache?. Si es asi, hay que descubrir como hace para evitar la excepcion de seguridad.

Saludos

Hola Richard, perdón por la demora en la respuesta, recién me repongo de las vacaciones :wink:

Claro, esto funciona así como lo explicas. Cargamos a los datos desde el servidor para que todo funcione correctamente.

La cuestión es esta justamente. Desde Firefox opera con total normalidad. No se saltea este control (ya lo probé, agregando en el cliente por js datos a un combo directamente). Pero en Chromium es que se produce el error que te mostraba inicialmente. ¿Es porque solo se soporta FF como navegador?

Saludos!

Hola Sergio,

Creo que tenemos que separar el caso para ver que puede estar pasando.

  • Mencionas que no saltea el control… entonces, se dispara la excepcion pero no se muestra el mensaje o no se dispara la excepcion?

  • Cuando decis que opera con normalidad… te referis a que se persisten los valores que envias o a que no te sale el mensaje de error?

Saludos

Para ambas situaciones, me refería a que utilizando el navegador Firefox opera normalmente: valida los datos del combo para que no se haya inyectado nada raro, los recibe en el servidor y te los deja trabajar, etc. todo como se espera funcione y lanzando la excepción cuando se inyecta de forma manual e intencionada un dato en el cliente.

En el caso de Chromium, encontramos que esa validación se dispara a pesar de haber mandado por post (ajax mediante) los datos correctos al combo. Siempre que cambiamos los datos del combo vía ajax, al procesar el formulario se produce el error.

Hola Sergio,

dado que los datos en memoria se persisten del lado servidor, el unico motivo que se me ocurre para que exista diferencia entre los browsers, es que ambos no esten enviando los mismos datos en la llamada ajax, ya sea por un error en JS u otro inconveniente. Podrias tracear ambos browsers y fijarte que este recibiendo lo mismo el metodo que implementa el servicio que invocan via ajax?

De otra manera, lo que queda es que la implementacion del lado del CI este teniendo cuestiones particulares segun el browser, dudo que hayan incluido alguna particularidad en PHP a tal efecto.

Saludos