リクエストリファラーパスを取得する方法は?


82

リファラーのパスが必要です。ドメイン名は必要ありません。たとえば、リファラーが http://www.google.com/adsense私が欲しい場合/adsense

回答:


138

request.referer文字列を返しますが、RubyのURIモジュールを使用して文字列をラップし、パスを要求することができます。

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

4
そのURI(request.referer)行を使用していて、URI :: InvalidURIError:bad URI(is not URI?)エラーが発生し続けています。これが何であるかについて何か考えはありますか?
kateray 2012

それ以上の情報なしでそれが何であるかを言うのは難しい。request.refererログにだけ印刷して、Rubyが気に入らない理由を確認してください。(
追記:

1
詳細についてはこの質問を確認してくださいURI::InvalidURIError
James Chevalier

奇妙なことに、リファラーは空白でなくても無効なURIになる可能性があります。'|'を含むリファラーでこれを発見しました。これによりURI :: InvalidURIErrorが発生しました。URI.Parseをbegin / rescue / endブロックでラップしています。
tomf 2015年

28

リファラーにアクセスするには

request.referer

3
しかし、リファラーは完全なURLを提供します。パスが必要
rails101 2011

2
役立つリンク@Fivellをありがとうございます。将来の訪問者がリンク切れに悩まされないように、このスレッド自体にその情報を含む回答を追加しました。
chadoh 2011年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.