在rails中检测外部URL的最佳方法是什么?

时间:2013-09-27 07:07:13

标签: ruby-on-rails url

检测rails中外部URL的最佳方法是什么?

def external?(url)
 return true if url is external
end

3 个答案:

答案 0 :(得分:3)

这里或其他任何地方都没有验证。如果url包含root_url

,则只返回true
is_external_url?(url)
  true unless url.include?(root_url)
end

答案 1 :(得分:0)

def get_host_name(url)
  url = "http://#{url}" if URI.parse(url).scheme.nil?
  URI.parse(url).host.downcase
end

def is_external_url?(url)
  host = get_host_name(url)
  host != 'www.mydomain.com'
end

答案 2 :(得分:-1)

如果您无权访问当前域,请检查当前应用程序中是否识别该路径

def external?(url)
  !!(Rails.application.routes.recognize_path(URI.parse(url).path) rescue false)
end