如何通过检查 URI 是否引用给定域名来验证 URI?

How to validate URIs by checking if those refer to a given domain name?

我正在 运行ning Ruby Rails 4.1.1,我想通过检查 URI 是否在给定域名中来验证 URI。也就是说,uri 字符串可以作为 params 发送到我的控制器,我想检查 uri "refers" 是否发送到我的应用程序域名 www.myapp.com .当然,uri 应该是有效的 URI reference.

# Invalid URIs
www.website.com
http://www.website.com
http://www.website.com/
https://www.website.com/
ftp://www.website.com/
ftps://www.website.com/
http://www.website.com/some/path

# Valid URIs
www.myapp.com
http://www.myapp.com
http://www.myapp.com/
https://www.myapp.com/
ftp://www.myapp.com/
ftps://www.myapp.com/
http://www.myapp.com/some/path

我怎样才能做到这一点(也许只需在 Rails 上使用 Ruby)?

注意:我正在验证 URI 以允许用户设置自定义重定向并且我知道 vulnerabilities。我计划 运行 以我的 application_controller.rb.

中所述的方法进行验证
require 'uri'

uri = URI.parse 'http://www.website.com/some/path'

isOK = case uri.host
       when 'www.website.com' then true
       else false
       end

#⇒ true

希望对您有所帮助。

目前 Addressable 是我使用 URI 的首选:

require 'addressable/uri'

Addressable::URI.parse('http://www.myapp.com/some/path').host == 'www.myapp.com'