我有一個Rails應用程序,我想超載request.remote_ip和request.ip才能使用的CloudFlare頭(HTTP_CF_CONNECTING_IP),如果它是目前... 我已經嘗試了這些,但他們都不工作:我該如何重新定義ruby和rails request.ip和request.remote_ip方法?
module Rack
class Request
class << self
def ip
@ip ||= (@env['HTTP_CF_CONNECTING_IP'] || super)
end
end
end
end
module ActionDispatch
class Request < Rack::Request
class << self
def remote_ip
@remote_ip ||= (@env['HTTP_CF_CONNECTING_IP'] || super)
end
end
end
end
我不能在application_controller因爲我一些其他的寶石(如色器件)使用一個額外的方法類似
def connecting_ip
@env['HTTP_CF_CONNECTING_IP'] || request.remote_ip
end
其使用request.ip
謝謝!
你爲什麼要重新定義這些方法指向一個標頭,不添加到您的application.rb中這
你可以看到這個完整的要點通常包含IP地址信息? –
對不起,是我不好(我複製和從代碼我是想看看它是否加載某個值粘貼)...正確的頭值是HTTP_CF_CONNECTING_IP,這是對下CloudFlare的 要求設置我也試着刪除類< –
mikk1