2014年3月16日日曜日

Rails でIPを取得するとき

RailsでIPを取得するとき、古い記事だと
    request.env["HTTP_X_FORWARDED_FOR"] || request.remote_ip
これで取れると書いてあります。

しかし、HTTP_X_FORWARDED_FORは、カンマ区切りで複数のIPが帰ってきてしまうので、使い勝手よくありません。
request.remote_ipも、いくつかのIP取得のメソッドの集合のようで、HTTP_X_FORWARDED_FORを含んでおり、カンマ区切りで帰ってくる可能性大。

そういうわけで、こっちを使うほうがいいかも。
    request.env["HTTP_X_FORWARDED_FOR"].split(",")[0] || request.remote_ip

メモ。