Posted at

Ruby on Rails request.refererとrequest.referrer

More than 3 years have passed since last update.

Rails初心者です。Railsの中で遷移元URLを取得する方法を調べていて、request.refererを呼び出すべし、これでHTTPヘッダの中にあるHTTPリファラを参照出来る。という情報を見つけました。

早速試してみようとしたのですが、そこで気づきました。

スクリーンショット 2014-08-19 10.00.46.png

refererだけでなく、request.referrerというのがあるのです。

滅茶苦茶紛らわしいじゃねーか! 何が違うんだ、何が!

で、request.rbの中を覗いてみると、

スクリーンショット 2014-08-19 10.09.34.png

alias=別名でした。つまり全く同じものを指しています。何も違わないわけですね・・・

じゃあ、何のためにこんなもの存在するんだ、スペルミスする人のために親切心で気を利かせてくれているのか? また疑問なので調べてみたところ、

httpのヘッダ項目を指すときはreferer、英単語として正しいのはreferrer、

が正解なんですって。何でも元々HTTPの仕様を策定していたときに、その中のキーパーソン的な人がミススペルをしたのがそのまま通ってしまい、refererが定着してしまったそうです。

つまり、RFC2616を正とするかMerriam-Websterを正にするかによって答えは変わってくるということでしょうか。その辺の判断は個々のプログラマーに任せますというのは、なかなかRails寛大で良い感じがします。