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.

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'

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

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.