Jak uzyskać ścieżkę referencyjną wniosków?


83

Potrzebuję ścieżki strony odsyłającej. Nie chcę nazwy domeny. Na przykład, jeśli strona odsyłająca to http://www.google.com/adsenseja chcę /adsense.

Odpowiedzi:


139

request.refererzwraca ciąg, ale możesz użyć modułu URI Rubiego, aby go opakować, a następnie po prostu zapytać o ścieżkę:

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

4
Używam tej linii URI (request.referer) i nadal otrzymuję błąd URI :: InvalidURIError: zły URI (nie jest URI?). masz pomysł, co to może być?
— kateray

Trudno powiedzieć, co to może być bez dodatkowych informacji. Spróbuj wydrukować tylko request.refererw dziennikach, aby zobaczyć, dlaczego Ruby może się nie podobać. (PS: Możesz zadać swoje pytanie jako osobne pytanie, a nie jako komentarz do odpowiedzi na inne pytanie. :-))
— chadoh

1
Sprawdź to pytanie, aby dowiedzieć się więcej URI::InvalidURIError.
— James Chevalier

Co dziwne, strona odsyłająca może być nieprawidłowym identyfikatorem URI, nawet jeśli nie jest pusta. Odkryłem to za pomocą elementu odsyłającego zawierającego znak „|”, który wywołał URI :: InvalidURIError Zawijam URI.Parse w bloku begin / rescue / end.
— tomf

27

Możesz uzyskać dostęp do referencji za pomocą

request.referer

3
Ale strona odsyłająca podaje pełny adres URL. potrzebuję ścieżki
— rails101

2
Dziękuję za pomocny link @Fivell. Dodałem odpowiedź z informacjami z niej do samego wątku, aby przyszli odwiedzający nie byli nękani zgnilizną linków.
— chadoh
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.