Wie erhalte ich den Pfad für Anforderungsreferenten?

81

Ich brauche den Weg des Überweisers. Ich möchte den Domainnamen nicht. Zum Beispiel, wenn der Referrer http://www.google.com/adsenseich möchte /adsense.

Schienen101
quelle

Antworten:

136

request.refererGibt einen String zurück, aber Sie können Rubys URI-Modul verwenden , um ihn zu verpacken, und ihn dann einfach nach seinem Pfad fragen:

if URI(request.referer).path == '/adsense'
Chadoh
quelle
4
Ich verwende diese URI-Zeile (request.referer) und erhalte weiterhin den Fehler URI :: InvalidURIError: bad URI (ist nicht URI?). Irgendeine Idee, was das sein könnte?
kateray
Schwer zu sagen, was es ohne weitere Informationen sein könnte. Versuchen Sie, nur die request.refererin die Protokolle zu drucken, um zu sehen, warum Ruby es möglicherweise nicht mag. (PS: Vielleicht möchten Sie Ihre Frage als separate Frage stellen, anstatt als Kommentar zur Antwort auf eine andere Frage. :-))
Chadoh
1
Schauen Sie sich diese Frage an, um mehr darüber zu erfahren URI::InvalidURIError.
James Chevalier
Seltsamerweise kann der Referrer ein ungültiger URI sein, auch wenn er nicht leer ist. Ich habe dies mit einem Referrer entdeckt, der ein '|' enthält, das URI :: InvalidURIError ausgelöst hat. Ich verpacke die URI.Parse in einen Start- / Rettungs- / Endblock.
Tomf
28

Sie können mit auf Referer zugreifen

request.referer
Adrian Serafin
quelle
3
Aber Referrer gibt volle URL. Ich brauche den Pfad
Rails101
2
Vielen Dank für den hilfreichen Link @Fivell. Ich habe diesem Thread selbst eine Antwort mit den Informationen hinzugefügt, damit zukünftige Besucher nicht von Link-Rot geplagt werden.
Chadoh