2010-08-23 19 views
8

He utilizado el código "request.getHeader (" Referer ");" El código parecía funcionar bien. Pero recientemente descubrí que no está funcionando en IE. IE estaba lanzando nulo. Ahora no tengo idea de cómo seguir adelante. ¿Hay alguna alternativa para el encabezado "Referer" que puede obtener el enlace anterior y funcionar correctamente en todos los navegadores? Establecer un encabezado personalizado desde el enlace anterior no es una opción viable para mí. Entonces alguien por favor me ayude con esto. Gracias.Alternativa al encabezado "Referer"

+2

La etiqueta jsp sugiere que está intentando acceder a los encabezados en los archivos jsp. No deberías hacer eso. El procesamiento de Java pertenece a un controlador, no a un componente de vista. –

+0

Bueno, ¿cuál debería ser la mejor forma de acercamiento en este caso? Necesito agregar el último tiempo de inicio de sesión del usuario. –

Respuesta

10

La entrada del encabezado "Referer" es opcional. No puedes confiar en que esté presente. No existe una forma de navegación cruzada para obtener el enlace anterior porque esto depende de la configuración del usuario y la configuración del proxy (es decir, lo que los administradores del sistema creen que deberían permitirle ver).

Debe encontrar una manera de vivir sin esta información.

+0

Si ese es el caso, ¿hay alguna forma de obtener el enlace anterior en IE? –

+4

No creo que sea específico de IE. La mayoría de los navegadores te permiten desactivar el encabezado de referencia (r) er, y si escribes una url en la barra de ubicación manualmente, tampoco habrá un referidor. No debes depender de la información del referidor. –

7

No está claro para qué lo necesita, pero sospecho que lo necesita para poder volver a una "página inicial" en el mismo sitio web cuando se termine alguna acción. Su mejor opción es pasar el URI de solicitud como parámetro de solicitud. P.ej. un enlace de conexión:

<a href="/login?from=${pageContext.request.requestURI}">login</a> 

En el formulario de acceso, consérvelo para la siguiente petición como valor de entrada oculta de la forma:

<input type="hidden" name="from" value="${param.from}"> 

En el método de acción de acceso, simplemente redirigir a la URL después de terminar la acción.

response.sendRedirect(request.getParameter("from")); 

Si esto no es lo que estás buscando es, entonces usted realmente debería Elaborar su pregunta más que pedir la forma de lograr un requisito funcional en lugar de pedir la forma de lograr una solución (mal).

Confiar cualquier flujo de lógica de negocios en el referer realmente fue una mala idea desde el principio. Su primera lección de desarrollador web debería haber sido: el usuario final tiene completo control sobre lo que envía con la solicitud HTTP. No debe confiar en que toda la información esté presente, y mucho menos 100% correcta.