SlideShare una empresa de Scribd logo
UDA – Utilidades de desarrollo de aplicaciones by EJIE is licensed under a Creative Commons Reconocimiento-
NoComercial-CompartirIgual 3.0 Unported License.
UDA - Utilidades de desarrollo de aplicaciones
Emulación de peticiones XHR mediante iframes
Fecha: 18/09/2012 Referencia:
EJIE S.A.
Mediterráneo, 14
Tel. 945 01 73 00*
Fax. 945 01 73 01
01010 Vitoria-Gasteiz
Posta-kutxatila / Apartado: 809
01080 Vitoria-Gasteiz
www.ejie.es
Emulación de peticiones XHR mediante iframes ii/8
Control de documentación
Título de documento: Gestión de validaciones
Histórico de versiones
Código: Versión: Fecha: Resumen de cambios:
1.0.0 18/09/2012 Primera versión.
Cambios producidos desde la última versión
Control de difusión
Responsable: Ander Martínez
Aprobado por:
Firma: Fecha:
Distribución:
Referencias de archivo
Autor:
Nombre archivo:
Localización:
Emulación de peticiones XHR mediante iframes iii/8
Contenido
Capítulo/sección Página
1 Introducción 1
2 Arquitectura 2
1.1 Soporte completo de operaciones HTTP 2
1.2 Soporte a la gestión de códigos de error HTTP 3
Emulación de peticiones XHR mediante iframes 1/8
1 Introducción
En el presente documento se van a exponer un conjunto de soluciones necesarias para integrar
correctamente el uso de iframes con la infraestructura de UDA.
Cabe indicar que mediante este documento no se promueve el uso de iframes, sino que se describen los
componentes y configuraciones de los mismos que se deben de realizar para que su integración con el resto
de componentes sea correcta.
Emulación de peticiones XHR mediante iframes 2/8
2 Arquitectura
Aunque el uso de iframes está desaconsejado existen determinadas situaciones en las que su uso se vuelve
necesario:
• Sustituir las peticiones AJAX para navegadores que no permiten realizar subida de ficheros mediante
peticiones XHR.
• Realizar peticiones cross-domain.
El uso de iframes puede solventarnos estos problemas pero su uso no está exento de particularidades y
incompatibilidades con la infraestructura proporcionada por UDA. Los problemas que se han de solventar son
los siguientes:
• Imposibilidad de realizar las peticiones mediante métodos http diferentes a GET y POST. En los
envíos de formularios mediante un submit (modo en el que se realiza desde un iframe), únicamente se
puede realizar mediante uno de estos dos métodos http. Esto representa una limitación a la hora de
utilizar el conjunto de operaciones GET, POST, PUT y DELETE utilizado en UDA en el mapeo de las
peticiones en los controller.
• No se puede determinar el código de error de la respuesta http. Una vez obtenida la respuesta del
servidor no se puede determinar el código de error http que se ha incluido en la misma. Esto presenta
un problema a la hora de resolver errores como los de validación, seguridad o producidos durante el
envío de ficheros, los cuales hacen uso de los códigos de estado http.
Como problema añadido, en Internet Explorer 8 no se puede acceder al contenido de la respuesta en
caso de recibir un código de error http.
Para solventar estos problemas se han incluido una serie de componentes que mediante su correcta
configuración permiten la correcta integración de los iframes con el resto de la infraestructura.
1.1 Soporte completo de operaciones HTTP
A continuación se va a indicar la configuración que se ha de llevar a cabo para permitir el uso de operaciones
diferentes a GET y POST para el envío de formularios.
Para lograr ese objetivo haremos uso del filtro HiddenHttpMethodFilter proporcionado por Spring. El
funcionamiento del filtro es el siguiente: La petición http se realiza de manera normal mediante GET o POST.
En la petición se incluye un parámetro cuyo valor es el método http que se desea utilizar para realizar el
mapeo de la petición. El filtro modifica el método de la petición para que el mapeo se realice con el indicado
en el parámetro.
La configuración se debe de realizar una vez en cada unos de los War de que disponga la aplicación.
Se deberá de incluir lo siguiente en el fichero web.xml:
<!-- Filtro encargado de resolver las peticiones mutipart. -->
<filter>
<filter-name>multipartFilter</filter-name>
<filter-class>org.springframework.web.multipart.support.MultipartFilter</filter-class>
<init-param>
Emulación de peticiones XHR mediante iframes 3/8
<param-name>multipartResolverBeanName</param-name>
<param-value>multipartResolver</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>multipartFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- Filtro encargado de mapear correctamente peticiones que no sean GET
y POST, al tipo indicado en el parametro _method -->
<filter>
<filter-name>httpMethodFilter</filter-name>
<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>httpMethodFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Se incluyen los siguientes filtros:
• HiddenHttpMethodFilter: Este filtro es el que posibilita realizar el mapeo de operaciones diferentes a
GET y POST. Realiza la trasformación del método http de la petición al indicado en el parámetro
correspondiente que se incluye en la request. El nombre del parámetro por defecto es _method pero
puede ser personalizado mediante el parámetro methodParam en la configuración del filtro.
• MultipartFilter: En el caso de realizarse envío de ficheros es necesario definir este filtro antes que el
HiddenHttpMethodFilter. Esto es debido a que este último no puede procesar peticiones multipart por
lo que deben ser resueltas previamente.
El valor del parámetro multipartResolverBeanName corresponde al especificado en la
configuración del fichero mvc-config.xml
Los componentes RUP formulario y upload sd realizan internamente la gestión del parámetro _method en
caso de que sea necesario el uso del mismo. En caso de que se desee utilizar esta solución para formularios
propios de la aplicación que no hagan uso de los componentes RUP, se deberá de incluir de manera manual
este parámetro en la petición. Un ejemplo sería la inclusión de un campo hidden como el siguiente:
<input type="hidden" id="_method" name="_method" value="PUT" />
1.2 Soporte a la gestión de códigos de error HTTP
La siguiente configuración va a permitir la gestión de los códigos de error http enviados en la respuesta del
servidor.
Como ya se ha comentado anteriormente, el uso de iframes no permite el acceso al código de estado enviado
en la respuesta. Los componentes RUP de UDA interactuan con el servidor mediante estos códigos de error
en los siguientes casos:
• 403 Forbidden: Error de seguridad producido a partir de un intento de acceso no autorizado.
Emulación de peticiones XHR mediante iframes 4/8
• 406 Not aceptable: Errores de validación de los datos enviados.
• 413 Request Entity Too Large: Error producido al producirse un envío de un fichero que supera el
límite de tamaño máximo establecido en la configuración del servidor.
La solución a esta problemática pasa por el envío de una estructura que arrope el contenido original de la
respuesta junto con la información relevante del código de error http. La estructura utilizada por la mayoría de
componentes jquery es la siguiente (como ejemplo con el envío de un código de error 406):
<textarea status="406" statusText="NotAcceptable">
["Contenido de la respuesta"]
</textarea>
El contenido de la respuesta se arropa mediante un tag <textarea>…</textarea> en cuyos atributos
status y statusText se incluye la información del código de error.
Es importante destacar que para permitir el acceso al contenido de la respuesta cuando se utiliza el
navegador IE8, se sustituye el estado http por el de 200 OK.
Para activar esta característica se debe de incluir en el fichero de configuración mvc-config.xml la siguiente
declaración de bean:
<!-- Filtro utilizado para emular el comportamiento de los mensajes de error http en peticiones
realizadas desde iframes -->
<bean id="iframeXHREmulationFilter" class="com.ejie.x38.IframeXHREmulationFilter" />
Y en el fichero web.xml se deberá de incluir lo siguiente:
<!-- Filtro utilizado para emular el comportamiento de los mensajes de error http en peticiones
realizadas desde iframes -->
<filter>
<filter-name>iframeXHREmulationFilter</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>iframeXHREmulationFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Al implementar la solución se ha tratado de lograr una que sea lo menos intrusiva con el código propio de la
aplicación. De este modo con solo incluir o retirar el filtro se activa o desactiva esta característica.
Para indicar al filtro las peticiones que debe de procesar para realizar la transformación en la respuesta, se
utiliza un parámetro enviado en la petición que determina el procesado de la misma. El parámetro utilizado
para tal función es _emulate_iframe_http_status.
Emulación de peticiones XHR mediante iframes 5/8
Los componentes RUP gestionan de manera automática el uso de este parámetro detectando los casos en los
que es necesario para el correcto funcionamiento de la aplicación. En el caso de que sea necesario su uso por
parte de los desarrolladores para utilizarlo en los desarrollos propios, se puede incluir en la petición del mismo
modo que con el parámetro _method.
<input type="hidden" id="_emulate_iframe_http_status" name="_ emulate_iframe_http_status"
value="true" />

Más contenido relacionado

Similar a UDA-Anexo emulación xhr-iframes

Protocolos de internet
Protocolos de internetProtocolos de internet
Protocolos de internet
Alejandro López
 
UDA-Componentes RUP. Formulario
UDA-Componentes RUP. FormularioUDA-Componentes RUP. Formulario
UDA-Componentes RUP. Formulario
Ander Martinez
 
UDA-Componentes RUP. Formulario (v2.1.1 deprecado)
UDA-Componentes RUP. Formulario  (v2.1.1 deprecado)UDA-Componentes RUP. Formulario  (v2.1.1 deprecado)
UDA-Componentes RUP. Formulario (v2.1.1 deprecado)
Ander Martinez
 
Fundamentos de la web
Fundamentos de la webFundamentos de la web
Fundamentos de la web
Facultad de Ciencias y Sistemas
 
PROTOCOLO HTTP.pptx
PROTOCOLO HTTP.pptxPROTOCOLO HTTP.pptx
PROTOCOLO HTTP.pptx
jeremydelpezo2
 
Seguridad en web
Seguridad en webSeguridad en web
Seguridad en web
jallendeastigarraga
 
Presentación1
Presentación1Presentación1
Presentación1
fabymon
 
Http[1]
Http[1]Http[1]
PROTOCOLO HTTP
PROTOCOLO HTTPPROTOCOLO HTTP
PROTOCOLO HTTP
Juan Carlos Utec
 
Clase 5 AJAX - Desarrollo de aplicaciones móviles
Clase 5  AJAX - Desarrollo de aplicaciones móvilesClase 5  AJAX - Desarrollo de aplicaciones móviles
Clase 5 AJAX - Desarrollo de aplicaciones móviles
Christian Cabrera
 
ASR_Tema_3.pdf
ASR_Tema_3.pdfASR_Tema_3.pdf
ASR_Tema_3.pdf
AnonymousNdBOr4
 
Http
HttpHttp
Actividad4 manual usuarrio _victor jaimes
Actividad4 manual usuarrio _victor jaimesActividad4 manual usuarrio _victor jaimes
Actividad4 manual usuarrio _victor jaimes
Victor Jaimes
 
Introducción a aplicaciones web.
Introducción a aplicaciones web.Introducción a aplicaciones web.
Introducción a aplicaciones web.
camilaml
 
Introducció a les Aplicació Web
Introducció a les Aplicació WebIntroducció a les Aplicació Web
Introducció a les Aplicació Web
CarlesMG57
 
Ajax
AjaxAjax
Ajax
ousli07
 
Microsoft Asp. Net [Asp.Net - Parte 2]
Microsoft Asp. Net [Asp.Net - Parte 2]Microsoft Asp. Net [Asp.Net - Parte 2]
Microsoft Asp. Net [Asp.Net - Parte 2]
Antonio Torres
 
Curso de php
Curso de phpCurso de php
Programación web 1er dept
Programación web 1er deptProgramación web 1er dept
Programación web 1er dept
Leonardo Moreno
 
Desarrollo de sistios web
Desarrollo de sistios webDesarrollo de sistios web
Desarrollo de sistios web
esmartcrimt
 

Similar a UDA-Anexo emulación xhr-iframes (20)

Protocolos de internet
Protocolos de internetProtocolos de internet
Protocolos de internet
 
UDA-Componentes RUP. Formulario
UDA-Componentes RUP. FormularioUDA-Componentes RUP. Formulario
UDA-Componentes RUP. Formulario
 
UDA-Componentes RUP. Formulario (v2.1.1 deprecado)
UDA-Componentes RUP. Formulario  (v2.1.1 deprecado)UDA-Componentes RUP. Formulario  (v2.1.1 deprecado)
UDA-Componentes RUP. Formulario (v2.1.1 deprecado)
 
Fundamentos de la web
Fundamentos de la webFundamentos de la web
Fundamentos de la web
 
PROTOCOLO HTTP.pptx
PROTOCOLO HTTP.pptxPROTOCOLO HTTP.pptx
PROTOCOLO HTTP.pptx
 
Seguridad en web
Seguridad en webSeguridad en web
Seguridad en web
 
Presentación1
Presentación1Presentación1
Presentación1
 
Http[1]
Http[1]Http[1]
Http[1]
 
PROTOCOLO HTTP
PROTOCOLO HTTPPROTOCOLO HTTP
PROTOCOLO HTTP
 
Clase 5 AJAX - Desarrollo de aplicaciones móviles
Clase 5  AJAX - Desarrollo de aplicaciones móvilesClase 5  AJAX - Desarrollo de aplicaciones móviles
Clase 5 AJAX - Desarrollo de aplicaciones móviles
 
ASR_Tema_3.pdf
ASR_Tema_3.pdfASR_Tema_3.pdf
ASR_Tema_3.pdf
 
Http
HttpHttp
Http
 
Actividad4 manual usuarrio _victor jaimes
Actividad4 manual usuarrio _victor jaimesActividad4 manual usuarrio _victor jaimes
Actividad4 manual usuarrio _victor jaimes
 
Introducción a aplicaciones web.
Introducción a aplicaciones web.Introducción a aplicaciones web.
Introducción a aplicaciones web.
 
Introducció a les Aplicació Web
Introducció a les Aplicació WebIntroducció a les Aplicació Web
Introducció a les Aplicació Web
 
Ajax
AjaxAjax
Ajax
 
Microsoft Asp. Net [Asp.Net - Parte 2]
Microsoft Asp. Net [Asp.Net - Parte 2]Microsoft Asp. Net [Asp.Net - Parte 2]
Microsoft Asp. Net [Asp.Net - Parte 2]
 
Curso de php
Curso de phpCurso de php
Curso de php
 
Programación web 1er dept
Programación web 1er deptProgramación web 1er dept
Programación web 1er dept
 
Desarrollo de sistios web
Desarrollo de sistios webDesarrollo de sistios web
Desarrollo de sistios web
 

Más de Ander Martinez

UDA-Componentes RUP. Tabla.v2.4.6
UDA-Componentes RUP. Tabla.v2.4.6UDA-Componentes RUP. Tabla.v2.4.6
UDA-Componentes RUP. Tabla.v2.4.6
Ander Martinez
 
Arinbide Adaptativo. Visión del producto.v1.0
Arinbide Adaptativo. Visión del producto.v1.0Arinbide Adaptativo. Visión del producto.v1.0
Arinbide Adaptativo. Visión del producto.v1.0
Ander Martinez
 
Arinbide Adaptativo. Retrospectiva.v1.0
Arinbide Adaptativo. Retrospectiva.v1.0Arinbide Adaptativo. Retrospectiva.v1.0
Arinbide Adaptativo. Retrospectiva.v1.0
Ander Martinez
 
Arinbide Adaptativo. Plan de entregas.v1.0
Arinbide Adaptativo. Plan de entregas.v1.0Arinbide Adaptativo. Plan de entregas.v1.0
Arinbide Adaptativo. Plan de entregas.v1.0
Ander Martinez
 
Arinbide Adaptativo. Pila de sprint.v1.0
Arinbide Adaptativo. Pila de sprint.v1.0Arinbide Adaptativo. Pila de sprint.v1.0
Arinbide Adaptativo. Pila de sprint.v1.0
Ander Martinez
 
Arinbide Adaptativo. Pila de producto.v1.0
Arinbide Adaptativo. Pila de producto.v1.0Arinbide Adaptativo. Pila de producto.v1.0
Arinbide Adaptativo. Pila de producto.v1.0
Ander Martinez
 
Arinbide Adaptativo. Pila de impedimentos.v1.1
Arinbide Adaptativo. Pila de impedimentos.v1.1Arinbide Adaptativo. Pila de impedimentos.v1.1
Arinbide Adaptativo. Pila de impedimentos.v1.1
Ander Martinez
 
Arinbide Adaptativo. Normas, participantes y procedimientos.v1.0
Arinbide Adaptativo. Normas, participantes y procedimientos.v1.0Arinbide Adaptativo. Normas, participantes y procedimientos.v1.0
Arinbide Adaptativo. Normas, participantes y procedimientos.v1.0
Ander Martinez
 
Arinbide Adaptativo. Monitorización.v1.0
Arinbide Adaptativo. Monitorización.v1.0Arinbide Adaptativo. Monitorización.v1.0
Arinbide Adaptativo. Monitorización.v1.0
Ander Martinez
 
Arinbide Adaptativo. Manual de usuario.v1.0
Arinbide Adaptativo. Manual de usuario.v1.0Arinbide Adaptativo. Manual de usuario.v1.0
Arinbide Adaptativo. Manual de usuario.v1.0
Ander Martinez
 
Arinbide Adaptativo. Diseño técnico.v1.0
Arinbide Adaptativo. Diseño técnico.v1.0Arinbide Adaptativo. Diseño técnico.v1.0
Arinbide Adaptativo. Diseño técnico.v1.0
Ander Martinez
 
Arinbide Adaptativo. Defectos y errores .v1.0
Arinbide Adaptativo. Defectos y errores .v1.0Arinbide Adaptativo. Defectos y errores .v1.0
Arinbide Adaptativo. Defectos y errores .v1.0
Ander Martinez
 
Arinbide Adaptativo. Acta de reunión.v1.1
Arinbide Adaptativo. Acta de reunión.v1.1Arinbide Adaptativo. Acta de reunión.v1.1
Arinbide Adaptativo. Acta de reunión.v1.1
Ander Martinez
 
Arinbide adaptativo. Anexo. Conceptos básicos. v1.0
Arinbide adaptativo. Anexo. Conceptos básicos. v1.0Arinbide adaptativo. Anexo. Conceptos básicos. v1.0
Arinbide adaptativo. Anexo. Conceptos básicos. v1.0
Ander Martinez
 
Arinbide adaptativo.v1.0
Arinbide adaptativo.v1.0Arinbide adaptativo.v1.0
Arinbide adaptativo.v1.0
Ander Martinez
 
Arinbide.v3.0
Arinbide.v3.0Arinbide.v3.0
Arinbide.v3.0
Ander Martinez
 
UDA-Componentes RUP. Upload
UDA-Componentes RUP. UploadUDA-Componentes RUP. Upload
UDA-Componentes RUP. Upload
Ander Martinez
 
UDA-Componentes RUP. Reporting
UDA-Componentes RUP. ReportingUDA-Componentes RUP. Reporting
UDA-Componentes RUP. Reporting
Ander Martinez
 
UDA-Componentes RUP. Tabla Avanzada
UDA-Componentes RUP. Tabla AvanzadaUDA-Componentes RUP. Tabla Avanzada
UDA-Componentes RUP. Tabla Avanzada
Ander Martinez
 
UDA-Componentes RUP. Pestañas
UDA-Componentes RUP. PestañasUDA-Componentes RUP. Pestañas
UDA-Componentes RUP. Pestañas
Ander Martinez
 

Más de Ander Martinez (20)

UDA-Componentes RUP. Tabla.v2.4.6
UDA-Componentes RUP. Tabla.v2.4.6UDA-Componentes RUP. Tabla.v2.4.6
UDA-Componentes RUP. Tabla.v2.4.6
 
Arinbide Adaptativo. Visión del producto.v1.0
Arinbide Adaptativo. Visión del producto.v1.0Arinbide Adaptativo. Visión del producto.v1.0
Arinbide Adaptativo. Visión del producto.v1.0
 
Arinbide Adaptativo. Retrospectiva.v1.0
Arinbide Adaptativo. Retrospectiva.v1.0Arinbide Adaptativo. Retrospectiva.v1.0
Arinbide Adaptativo. Retrospectiva.v1.0
 
Arinbide Adaptativo. Plan de entregas.v1.0
Arinbide Adaptativo. Plan de entregas.v1.0Arinbide Adaptativo. Plan de entregas.v1.0
Arinbide Adaptativo. Plan de entregas.v1.0
 
Arinbide Adaptativo. Pila de sprint.v1.0
Arinbide Adaptativo. Pila de sprint.v1.0Arinbide Adaptativo. Pila de sprint.v1.0
Arinbide Adaptativo. Pila de sprint.v1.0
 
Arinbide Adaptativo. Pila de producto.v1.0
Arinbide Adaptativo. Pila de producto.v1.0Arinbide Adaptativo. Pila de producto.v1.0
Arinbide Adaptativo. Pila de producto.v1.0
 
Arinbide Adaptativo. Pila de impedimentos.v1.1
Arinbide Adaptativo. Pila de impedimentos.v1.1Arinbide Adaptativo. Pila de impedimentos.v1.1
Arinbide Adaptativo. Pila de impedimentos.v1.1
 
Arinbide Adaptativo. Normas, participantes y procedimientos.v1.0
Arinbide Adaptativo. Normas, participantes y procedimientos.v1.0Arinbide Adaptativo. Normas, participantes y procedimientos.v1.0
Arinbide Adaptativo. Normas, participantes y procedimientos.v1.0
 
Arinbide Adaptativo. Monitorización.v1.0
Arinbide Adaptativo. Monitorización.v1.0Arinbide Adaptativo. Monitorización.v1.0
Arinbide Adaptativo. Monitorización.v1.0
 
Arinbide Adaptativo. Manual de usuario.v1.0
Arinbide Adaptativo. Manual de usuario.v1.0Arinbide Adaptativo. Manual de usuario.v1.0
Arinbide Adaptativo. Manual de usuario.v1.0
 
Arinbide Adaptativo. Diseño técnico.v1.0
Arinbide Adaptativo. Diseño técnico.v1.0Arinbide Adaptativo. Diseño técnico.v1.0
Arinbide Adaptativo. Diseño técnico.v1.0
 
Arinbide Adaptativo. Defectos y errores .v1.0
Arinbide Adaptativo. Defectos y errores .v1.0Arinbide Adaptativo. Defectos y errores .v1.0
Arinbide Adaptativo. Defectos y errores .v1.0
 
Arinbide Adaptativo. Acta de reunión.v1.1
Arinbide Adaptativo. Acta de reunión.v1.1Arinbide Adaptativo. Acta de reunión.v1.1
Arinbide Adaptativo. Acta de reunión.v1.1
 
Arinbide adaptativo. Anexo. Conceptos básicos. v1.0
Arinbide adaptativo. Anexo. Conceptos básicos. v1.0Arinbide adaptativo. Anexo. Conceptos básicos. v1.0
Arinbide adaptativo. Anexo. Conceptos básicos. v1.0
 
Arinbide adaptativo.v1.0
Arinbide adaptativo.v1.0Arinbide adaptativo.v1.0
Arinbide adaptativo.v1.0
 
Arinbide.v3.0
Arinbide.v3.0Arinbide.v3.0
Arinbide.v3.0
 
UDA-Componentes RUP. Upload
UDA-Componentes RUP. UploadUDA-Componentes RUP. Upload
UDA-Componentes RUP. Upload
 
UDA-Componentes RUP. Reporting
UDA-Componentes RUP. ReportingUDA-Componentes RUP. Reporting
UDA-Componentes RUP. Reporting
 
UDA-Componentes RUP. Tabla Avanzada
UDA-Componentes RUP. Tabla AvanzadaUDA-Componentes RUP. Tabla Avanzada
UDA-Componentes RUP. Tabla Avanzada
 
UDA-Componentes RUP. Pestañas
UDA-Componentes RUP. PestañasUDA-Componentes RUP. Pestañas
UDA-Componentes RUP. Pestañas
 

Último

Manual de soporte y mantenimiento de equipo de cómputo
Manual de soporte y mantenimiento de equipo de cómputoManual de soporte y mantenimiento de equipo de cómputo
Manual de soporte y mantenimiento de equipo de cómputo
doctorsoluciones34
 
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIAMONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
leia ereni
 
edublogs info.docx asdasfasfsawqrdqwfqwfqwfq
edublogs info.docx asdasfasfsawqrdqwfqwfqwfqedublogs info.docx asdasfasfsawqrdqwfqwfqwfq
edublogs info.docx asdasfasfsawqrdqwfqwfqwfq
larapalaciosmonzon28
 
LA GLOBALIZACIÓN RELACIONADA CON EL USO DE HERRAMIENTAS.pptx
LA GLOBALIZACIÓN RELACIONADA CON EL USO DE HERRAMIENTAS.pptxLA GLOBALIZACIÓN RELACIONADA CON EL USO DE HERRAMIENTAS.pptx
LA GLOBALIZACIÓN RELACIONADA CON EL USO DE HERRAMIENTAS.pptx
pauca1501alvar
 
Second Life, informe de actividad del maestro Tapia
Second Life, informe de actividad del maestro TapiaSecond Life, informe de actividad del maestro Tapia
Second Life, informe de actividad del maestro Tapia
al050121024
 
Flows: Mejores Prácticas y Nuevos Features
Flows: Mejores Prácticas y Nuevos FeaturesFlows: Mejores Prácticas y Nuevos Features
Flows: Mejores Prácticas y Nuevos Features
Paola De la Torre
 
Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)
Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)
Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)
AbrahamCastillo42
 
El uso de las TIC's en la vida cotidiana
El uso de las TIC's en la vida cotidianaEl uso de las TIC's en la vida cotidiana
El uso de las TIC's en la vida cotidiana
231458066
 
La Inteligencia Artificial en la actualidad.docx
La Inteligencia Artificial en la actualidad.docxLa Inteligencia Artificial en la actualidad.docx
La Inteligencia Artificial en la actualidad.docx
luiscohailatenazoa0
 
INFORMATICA Y TECNOLOGIA
INFORMATICA Y TECNOLOGIAINFORMATICA Y TECNOLOGIA
INFORMATICA Y TECNOLOGIA
renzocruz180310
 
Manual de Soporte y mantenimiento de equipo de cómputos
Manual de Soporte y mantenimiento de equipo de cómputosManual de Soporte y mantenimiento de equipo de cómputos
Manual de Soporte y mantenimiento de equipo de cómputos
cbtechchihuahua
 
625204013-64-Camino-a-----La-Lectura.pdf
625204013-64-Camino-a-----La-Lectura.pdf625204013-64-Camino-a-----La-Lectura.pdf
625204013-64-Camino-a-----La-Lectura.pdf
yuberpalma
 
Slideshare: definiciòn, registrarse, presentaciones, ventajas y desventajas
Slideshare: definiciòn, registrarse, presentaciones, ventajas y desventajasSlideshare: definiciòn, registrarse, presentaciones, ventajas y desventajas
Slideshare: definiciòn, registrarse, presentaciones, ventajas y desventajas
AdrianaRengifo14
 
UML_clase_02_UML_casos_de_uso_05 EN DIAGRAMA
UML_clase_02_UML_casos_de_uso_05 EN DIAGRAMAUML_clase_02_UML_casos_de_uso_05 EN DIAGRAMA
UML_clase_02_UML_casos_de_uso_05 EN DIAGRAMA
martinezluis17
 
CURSO CAMARAS DE SEGURIDAD 2023 FINAL .pdf
CURSO CAMARAS DE SEGURIDAD 2023 FINAL .pdfCURSO CAMARAS DE SEGURIDAD 2023 FINAL .pdf
CURSO CAMARAS DE SEGURIDAD 2023 FINAL .pdf
LagsSolucSoporteTecn
 
Presentación Seguridad Digital Profesional Azul Oscuro (1).pdf
Presentación Seguridad Digital Profesional Azul Oscuro (1).pdfPresentación Seguridad Digital Profesional Azul Oscuro (1).pdf
Presentación Seguridad Digital Profesional Azul Oscuro (1).pdf
giampierdiaz5
 
TIC en educacion.rtf.docxlolololololololo
TIC en educacion.rtf.docxlolololololololoTIC en educacion.rtf.docxlolololololololo
TIC en educacion.rtf.docxlolololololololo
KukiiSanchez
 
El uso de las TIC por Cecilia Pozos S..pptx
El uso de las TIC  por Cecilia Pozos S..pptxEl uso de las TIC  por Cecilia Pozos S..pptx
El uso de las TIC por Cecilia Pozos S..pptx
cecypozos703
 
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
AMADO SALVADOR
 
Inteligencia Artificial
Inteligencia ArtificialInteligencia Artificial
Inteligencia Artificial
YashiraPaye
 

Último (20)

Manual de soporte y mantenimiento de equipo de cómputo
Manual de soporte y mantenimiento de equipo de cómputoManual de soporte y mantenimiento de equipo de cómputo
Manual de soporte y mantenimiento de equipo de cómputo
 
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIAMONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
 
edublogs info.docx asdasfasfsawqrdqwfqwfqwfq
edublogs info.docx asdasfasfsawqrdqwfqwfqwfqedublogs info.docx asdasfasfsawqrdqwfqwfqwfq
edublogs info.docx asdasfasfsawqrdqwfqwfqwfq
 
LA GLOBALIZACIÓN RELACIONADA CON EL USO DE HERRAMIENTAS.pptx
LA GLOBALIZACIÓN RELACIONADA CON EL USO DE HERRAMIENTAS.pptxLA GLOBALIZACIÓN RELACIONADA CON EL USO DE HERRAMIENTAS.pptx
LA GLOBALIZACIÓN RELACIONADA CON EL USO DE HERRAMIENTAS.pptx
 
Second Life, informe de actividad del maestro Tapia
Second Life, informe de actividad del maestro TapiaSecond Life, informe de actividad del maestro Tapia
Second Life, informe de actividad del maestro Tapia
 
Flows: Mejores Prácticas y Nuevos Features
Flows: Mejores Prácticas y Nuevos FeaturesFlows: Mejores Prácticas y Nuevos Features
Flows: Mejores Prácticas y Nuevos Features
 
Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)
Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)
Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)
 
El uso de las TIC's en la vida cotidiana
El uso de las TIC's en la vida cotidianaEl uso de las TIC's en la vida cotidiana
El uso de las TIC's en la vida cotidiana
 
La Inteligencia Artificial en la actualidad.docx
La Inteligencia Artificial en la actualidad.docxLa Inteligencia Artificial en la actualidad.docx
La Inteligencia Artificial en la actualidad.docx
 
INFORMATICA Y TECNOLOGIA
INFORMATICA Y TECNOLOGIAINFORMATICA Y TECNOLOGIA
INFORMATICA Y TECNOLOGIA
 
Manual de Soporte y mantenimiento de equipo de cómputos
Manual de Soporte y mantenimiento de equipo de cómputosManual de Soporte y mantenimiento de equipo de cómputos
Manual de Soporte y mantenimiento de equipo de cómputos
 
625204013-64-Camino-a-----La-Lectura.pdf
625204013-64-Camino-a-----La-Lectura.pdf625204013-64-Camino-a-----La-Lectura.pdf
625204013-64-Camino-a-----La-Lectura.pdf
 
Slideshare: definiciòn, registrarse, presentaciones, ventajas y desventajas
Slideshare: definiciòn, registrarse, presentaciones, ventajas y desventajasSlideshare: definiciòn, registrarse, presentaciones, ventajas y desventajas
Slideshare: definiciòn, registrarse, presentaciones, ventajas y desventajas
 
UML_clase_02_UML_casos_de_uso_05 EN DIAGRAMA
UML_clase_02_UML_casos_de_uso_05 EN DIAGRAMAUML_clase_02_UML_casos_de_uso_05 EN DIAGRAMA
UML_clase_02_UML_casos_de_uso_05 EN DIAGRAMA
 
CURSO CAMARAS DE SEGURIDAD 2023 FINAL .pdf
CURSO CAMARAS DE SEGURIDAD 2023 FINAL .pdfCURSO CAMARAS DE SEGURIDAD 2023 FINAL .pdf
CURSO CAMARAS DE SEGURIDAD 2023 FINAL .pdf
 
Presentación Seguridad Digital Profesional Azul Oscuro (1).pdf
Presentación Seguridad Digital Profesional Azul Oscuro (1).pdfPresentación Seguridad Digital Profesional Azul Oscuro (1).pdf
Presentación Seguridad Digital Profesional Azul Oscuro (1).pdf
 
TIC en educacion.rtf.docxlolololololololo
TIC en educacion.rtf.docxlolololololololoTIC en educacion.rtf.docxlolololololololo
TIC en educacion.rtf.docxlolololololololo
 
El uso de las TIC por Cecilia Pozos S..pptx
El uso de las TIC  por Cecilia Pozos S..pptxEl uso de las TIC  por Cecilia Pozos S..pptx
El uso de las TIC por Cecilia Pozos S..pptx
 
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
 
Inteligencia Artificial
Inteligencia ArtificialInteligencia Artificial
Inteligencia Artificial
 

UDA-Anexo emulación xhr-iframes

  • 1. UDA – Utilidades de desarrollo de aplicaciones by EJIE is licensed under a Creative Commons Reconocimiento- NoComercial-CompartirIgual 3.0 Unported License. UDA - Utilidades de desarrollo de aplicaciones Emulación de peticiones XHR mediante iframes Fecha: 18/09/2012 Referencia: EJIE S.A. Mediterráneo, 14 Tel. 945 01 73 00* Fax. 945 01 73 01 01010 Vitoria-Gasteiz Posta-kutxatila / Apartado: 809 01080 Vitoria-Gasteiz www.ejie.es
  • 2. Emulación de peticiones XHR mediante iframes ii/8 Control de documentación Título de documento: Gestión de validaciones Histórico de versiones Código: Versión: Fecha: Resumen de cambios: 1.0.0 18/09/2012 Primera versión. Cambios producidos desde la última versión Control de difusión Responsable: Ander Martínez Aprobado por: Firma: Fecha: Distribución: Referencias de archivo Autor: Nombre archivo: Localización:
  • 3. Emulación de peticiones XHR mediante iframes iii/8 Contenido Capítulo/sección Página 1 Introducción 1 2 Arquitectura 2 1.1 Soporte completo de operaciones HTTP 2 1.2 Soporte a la gestión de códigos de error HTTP 3
  • 4. Emulación de peticiones XHR mediante iframes 1/8 1 Introducción En el presente documento se van a exponer un conjunto de soluciones necesarias para integrar correctamente el uso de iframes con la infraestructura de UDA. Cabe indicar que mediante este documento no se promueve el uso de iframes, sino que se describen los componentes y configuraciones de los mismos que se deben de realizar para que su integración con el resto de componentes sea correcta.
  • 5. Emulación de peticiones XHR mediante iframes 2/8 2 Arquitectura Aunque el uso de iframes está desaconsejado existen determinadas situaciones en las que su uso se vuelve necesario: • Sustituir las peticiones AJAX para navegadores que no permiten realizar subida de ficheros mediante peticiones XHR. • Realizar peticiones cross-domain. El uso de iframes puede solventarnos estos problemas pero su uso no está exento de particularidades y incompatibilidades con la infraestructura proporcionada por UDA. Los problemas que se han de solventar son los siguientes: • Imposibilidad de realizar las peticiones mediante métodos http diferentes a GET y POST. En los envíos de formularios mediante un submit (modo en el que se realiza desde un iframe), únicamente se puede realizar mediante uno de estos dos métodos http. Esto representa una limitación a la hora de utilizar el conjunto de operaciones GET, POST, PUT y DELETE utilizado en UDA en el mapeo de las peticiones en los controller. • No se puede determinar el código de error de la respuesta http. Una vez obtenida la respuesta del servidor no se puede determinar el código de error http que se ha incluido en la misma. Esto presenta un problema a la hora de resolver errores como los de validación, seguridad o producidos durante el envío de ficheros, los cuales hacen uso de los códigos de estado http. Como problema añadido, en Internet Explorer 8 no se puede acceder al contenido de la respuesta en caso de recibir un código de error http. Para solventar estos problemas se han incluido una serie de componentes que mediante su correcta configuración permiten la correcta integración de los iframes con el resto de la infraestructura. 1.1 Soporte completo de operaciones HTTP A continuación se va a indicar la configuración que se ha de llevar a cabo para permitir el uso de operaciones diferentes a GET y POST para el envío de formularios. Para lograr ese objetivo haremos uso del filtro HiddenHttpMethodFilter proporcionado por Spring. El funcionamiento del filtro es el siguiente: La petición http se realiza de manera normal mediante GET o POST. En la petición se incluye un parámetro cuyo valor es el método http que se desea utilizar para realizar el mapeo de la petición. El filtro modifica el método de la petición para que el mapeo se realice con el indicado en el parámetro. La configuración se debe de realizar una vez en cada unos de los War de que disponga la aplicación. Se deberá de incluir lo siguiente en el fichero web.xml: <!-- Filtro encargado de resolver las peticiones mutipart. --> <filter> <filter-name>multipartFilter</filter-name> <filter-class>org.springframework.web.multipart.support.MultipartFilter</filter-class> <init-param>
  • 6. Emulación de peticiones XHR mediante iframes 3/8 <param-name>multipartResolverBeanName</param-name> <param-value>multipartResolver</param-value> </init-param> </filter> <filter-mapping> <filter-name>multipartFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- Filtro encargado de mapear correctamente peticiones que no sean GET y POST, al tipo indicado en el parametro _method --> <filter> <filter-name>httpMethodFilter</filter-name> <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class> </filter> <filter-mapping> <filter-name>httpMethodFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> Se incluyen los siguientes filtros: • HiddenHttpMethodFilter: Este filtro es el que posibilita realizar el mapeo de operaciones diferentes a GET y POST. Realiza la trasformación del método http de la petición al indicado en el parámetro correspondiente que se incluye en la request. El nombre del parámetro por defecto es _method pero puede ser personalizado mediante el parámetro methodParam en la configuración del filtro. • MultipartFilter: En el caso de realizarse envío de ficheros es necesario definir este filtro antes que el HiddenHttpMethodFilter. Esto es debido a que este último no puede procesar peticiones multipart por lo que deben ser resueltas previamente. El valor del parámetro multipartResolverBeanName corresponde al especificado en la configuración del fichero mvc-config.xml Los componentes RUP formulario y upload sd realizan internamente la gestión del parámetro _method en caso de que sea necesario el uso del mismo. En caso de que se desee utilizar esta solución para formularios propios de la aplicación que no hagan uso de los componentes RUP, se deberá de incluir de manera manual este parámetro en la petición. Un ejemplo sería la inclusión de un campo hidden como el siguiente: <input type="hidden" id="_method" name="_method" value="PUT" /> 1.2 Soporte a la gestión de códigos de error HTTP La siguiente configuración va a permitir la gestión de los códigos de error http enviados en la respuesta del servidor. Como ya se ha comentado anteriormente, el uso de iframes no permite el acceso al código de estado enviado en la respuesta. Los componentes RUP de UDA interactuan con el servidor mediante estos códigos de error en los siguientes casos: • 403 Forbidden: Error de seguridad producido a partir de un intento de acceso no autorizado.
  • 7. Emulación de peticiones XHR mediante iframes 4/8 • 406 Not aceptable: Errores de validación de los datos enviados. • 413 Request Entity Too Large: Error producido al producirse un envío de un fichero que supera el límite de tamaño máximo establecido en la configuración del servidor. La solución a esta problemática pasa por el envío de una estructura que arrope el contenido original de la respuesta junto con la información relevante del código de error http. La estructura utilizada por la mayoría de componentes jquery es la siguiente (como ejemplo con el envío de un código de error 406): <textarea status="406" statusText="NotAcceptable"> ["Contenido de la respuesta"] </textarea> El contenido de la respuesta se arropa mediante un tag <textarea>…</textarea> en cuyos atributos status y statusText se incluye la información del código de error. Es importante destacar que para permitir el acceso al contenido de la respuesta cuando se utiliza el navegador IE8, se sustituye el estado http por el de 200 OK. Para activar esta característica se debe de incluir en el fichero de configuración mvc-config.xml la siguiente declaración de bean: <!-- Filtro utilizado para emular el comportamiento de los mensajes de error http en peticiones realizadas desde iframes --> <bean id="iframeXHREmulationFilter" class="com.ejie.x38.IframeXHREmulationFilter" /> Y en el fichero web.xml se deberá de incluir lo siguiente: <!-- Filtro utilizado para emular el comportamiento de los mensajes de error http en peticiones realizadas desde iframes --> <filter> <filter-name>iframeXHREmulationFilter</filter-name> <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> </filter> <filter-mapping> <filter-name>iframeXHREmulationFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> Al implementar la solución se ha tratado de lograr una que sea lo menos intrusiva con el código propio de la aplicación. De este modo con solo incluir o retirar el filtro se activa o desactiva esta característica. Para indicar al filtro las peticiones que debe de procesar para realizar la transformación en la respuesta, se utiliza un parámetro enviado en la petición que determina el procesado de la misma. El parámetro utilizado para tal función es _emulate_iframe_http_status.
  • 8. Emulación de peticiones XHR mediante iframes 5/8 Los componentes RUP gestionan de manera automática el uso de este parámetro detectando los casos en los que es necesario para el correcto funcionamiento de la aplicación. En el caso de que sea necesario su uso por parte de los desarrolladores para utilizarlo en los desarrollos propios, se puede incluir en la petición del mismo modo que con el parámetro _method. <input type="hidden" id="_emulate_iframe_http_status" name="_ emulate_iframe_http_status" value="true" />