HttpServletRequest – cómo obtener la URL de referencia?

Necesito registrar las URL que se vinculan a mi sitio en un Servlet de Java.

Está disponible en el encabezado HTTP referer . Puede obtenerlo en un servlet de la siguiente manera:

 String referrer = request.getHeader("referer"); // Yes, with the legendary misspelling. 

Sin embargo, debe darse cuenta de que este es un valor controlado por el cliente y, por lo tanto, puede ser falsificado a algo completamente diferente o incluso eliminado. Por lo tanto, cualquiera que sea el valor devuelto, no debe usarlo para ningún proceso empresarial crítico en el backend, sino solo para el control de la presentación (por ejemplo, ocultar / mostrar / cambiar ciertas partes de diseño puro) y / o estadísticas.

Para los interesados, los antecedentes sobre la falta de ortografía se pueden encontrar en Wikipedia .

En realidad es: request.getHeader("Referer") , o mejor aún, y para ser 100% seguro, request.getHeader(HttpHeaders.REFERER) , donde HttpHeaders es com.google.common.net.HttpHeaders

Las URL se pasan en la solicitud: request.getRequestURL() .

Si te refieres a otros sitios que se vinculan a ti? Desea capturar el referidor HTTP, que puede hacer llamando:

 request.getHeader("referer"); 

Como todos han mencionado, es

 request.getHeader("referer"); 

Me gustaría agregar algunos detalles más sobre el aspecto de seguridad del encabezado del referer en contraste con la respuesta aceptada. En las hojas de referencia del Proyecto de seguridad de aplicaciones web abiertas ( OWASP ), en la Hoja de referencia de prevención de falsificación de solicitudes entre sitios (CSRF) se menciona la importancia del encabezado del refereador.

Lo que es más importante para esta comprobación de Same Origin recomendada, JavaScript no puede establecer una serie de encabezados de solicitud porque están en la lista de encabezados ‘prohibidos’. Solo los navegadores mismos pueden establecer valores para estos encabezados, haciéndolos más confiables porque ni siquiera se puede usar una vulnerabilidad XSS para modificarlos.

La comprobación de Origen de origen recomendada aquí se basa en tres de estos encabezados protegidos: Origen, Referente y Anfitrión, por lo que es una defensa de CSRF bastante sólida por sí misma.

Puede consultar la lista de encabezado prohibido aquí . El agente de usuario (es decir, el navegador) tiene el control total sobre estos encabezados, no el usuario.