Як отримати шлях до референта запиту?


83

Мені потрібен шлях реферала. Я не хочу доменного імені. Наприклад, якщо рефералом є http://www.google.com/adsenseя хочу /adsense.

Відповіді:


139

request.refererповертає рядок, але ви можете використовувати модуль URI Ruby, щоб обернути його, а потім просто запитати його про шлях:

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

4
Я використовую цей рядок URI (request.referer) і продовжую отримувати URI :: InvalidURIError: помилка URI (не URI?). будь-яка ідея, що це може бути?
kateray

Важко сказати, що це може бути без додаткової інформації. Спробуйте надрукувати лише request.refererжурнали, щоб зрозуміти, чому Рубі це може не сподобатися. (PS: Ви можете поставити своє питання як окреме питання, а не як коментар до відповіді на інше питання. :-))
chadoh

1
Перегляньте це питання, щоб дізнатись більше URI::InvalidURIError.
Джеймс Шевальє,

Як не дивно, але реферал може бути недійсним URI, навіть якщо він не порожній. Я розпізнав це за допомогою реферала, що містить '|', який підняв URI :: InvalidURIError Я обертаю URI.Parse у блоці початок / порятунок / кінець.
tomf

27

Ви можете отримати доступ до referer за допомогою

request.referer

3
Але реферал дає повну URL-адресу. мені потрібен шлях
rails101,

2
Дякуємо за корисне посилання @Fivell. Я додав відповідь із інформацією з нього до самої цієї теми, щоб майбутні відвідувачі не страждали від зв’язку.
чадо
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.