¿Cómo obtener la ruta de referencia de la solicitud?


82

Necesito la ruta del referente. No quiero el nombre de dominio. Por ejemplo, si el referente es http://www.google.com/adsenseI want /adsense.

Respuestas:


138

request.refererdevuelve una cadena, pero puede usar el módulo URI de Ruby para envolverlo y luego simplemente pedirle su ruta:

if URI(request.referer).path == '/adsense'

4
Estoy usando esa línea URI (request.referer) y sigo obteniendo un error URI :: InvalidURIError: bad URI (¿no es URI?). ¿Alguna idea de lo que podría ser esto?
kateray

Es difícil decir qué podría ser sin más información. Intente imprimir solo request.refereren los registros para ver por qué a Ruby podría no gustarle. (PD: es posible que desee hacer su pregunta como una pregunta separada, en lugar de como un comentario sobre la respuesta a otra pregunta. :-))
chadoh

1
Consulte esta pregunta para obtener más información URI::InvalidURIError.
James Chevalier

Curiosamente, el referente puede ser un URI no válido incluso si no está en blanco. Descubrí esto con una referencia que contiene un '|', que generó URI :: InvalidURIError Estoy envolviendo el URI.Parse en un bloque de inicio / rescate / fin.
tomf

28

Puede acceder al referer con

request.referer

3
Pero el referente proporciona una URL completa. necesito el camino
rails101

2
Gracias por el enlace útil, @Fivell. Agregué una respuesta con la información a este hilo para que los futuros visitantes no se vean afectados por el link-rot.
chadoh
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.