2011-01-12 21 views
11

El javadoc para javax.servlet.http.HttpServletResponse es un poco vago en la diferencia entre lo que manda encodeURL y encodeRedirectURL seguimiento, ¿hay algún ejemplo de lo que esas reglas son exactas? ¿Cuándo la salida de encodeURL difiere de encodeRedirectURL?Diferencia entre encodeURL y encodeRedirectURL

Para un ejemplo concreto, ya estoy generando una URL de redirección que usaré con response.sendRedirect(url). Entiendo que ya url codificada, pero quiero añadir un parámetro a la misma que tiene un valor que es otra url:

param2=http://google.com 

¿Cuál de las dos funciones puedo utilizar para codificar esto?

Respuesta

5

encodeURL() se usa para todas las URL en la salida de un servlet. Ayuda a identificar los identificadores de sesión con la URL.

encodeRedirectURL() se usa con res.sendRedirect solamente. También se usa para codificar identificadores de sesión con URL, pero solo durante la redirección.

+6

Cuándo la salida de encodeURL diferir de encodeRedirectURL? –

10

Salam Alekom Abduallah, busqué y busqué una respuesta que sabía que iba a encontrar en cualquiera de stackoverflow o coderanch y no he encontrado el answer de Charles Lyons el autor del libro en la mano en este momento era una alegre coincidencia.

publicado 8/9/2008 11:41 Exactamente - la diferencia de que encodeURL siempre escribe el ID de sesión de en la URL (por ejemplo, si es necesario porque las cookies son desactivado), mientras que encodeRedirectURL contiene lógica adicional para determine si es conveniente escribir la ID de sesión. Es una muy mala idea dar a los sitios webs extranjeros la ID de la sesión, por ejemplo, , ya que podrían suplantar la sesión de su usuario. Por lo tanto, encodeRedirectURL solo colocará jsessionid en la URL si esa URL se encuentra dentro de la aplicación web actual, y no realizará ninguna reescritura en caso contrario.

Charles Lyons (SCJP 1.4, abril de 2003; SCJP 5, diciembre de 2006; 1.4b SCWCD, abril de 2004) Autor de Estudio con el compañero OCEJWCD de examen de Oracle 1Z0-899 (ISBN 0955160340)

También encontrado este answer también que fue publicado antes,

publicado 19/04/2006 08:02 AM Cita informe posterior al moderador Hola,

el encodeURL se utiliza para codificar la URL de seguimiento de sesión en adelante e incluye el mecanismo. El encodeRedirectURL codifica la URL especificada para usar en el método sendRedirect.

La principal diferencia entre ambos es, la aplicación de método encodeRedirectURL incluye la lógica para determinar si el ID sesión tiene que ser codificado en el URL en el caso cuando se está redirigir la dirección URL a un contexto diferente, donde la sesión información no es necesaria o inválida. El método encodeURL no muestra el ID de usuario si las cookies están habilitadas.Además de esto, encodeRedirectURL no anexa la información de la sesión si la URL está redirigida a un contexto diferente (aplicación web). Debido a que las reglas para hacer esta determinación pueden diferir de las utilizadas para decidir si se codifica un enlace normal, este método es independiente de el método encodeURL.

Espero que esto te ayude.

Gracias

Narendra Dhande