¿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.