首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >(rails) url验证的奇怪问题

(rails) url验证的奇怪问题
EN

Stack Overflow用户
提问于 2009-12-01 17:57:55
回答 1查看 245关注 0票数 0

我在试着看看有没有网址。下面是我这样做的代码:

代码语言:javascript
运行
复制
validate :registered_domain_name_exists

private

def registered_domain_name_exists
  if url and url.match(URI::regexp(%w(http https))) then
    begin # check header response
      case Net::HTTP.get_response(URI.parse(url))
        when Net::HTTPSuccess then true
        else errors.add(:url, "URL does not exist") and false
      end
    rescue # DNS failures
      errors.add(:url, "URL does not exist") and false
    end
  end
end

然而,这段代码失败了。它说http://www.biorad.com不是一个有效的网站。这是绝对不正确的。另外,我知道http://www.biorad.com会将你重定向到http://www.bio-rad.com/evportal/evolutionPortal.portal,所以我也尝试了这个网址,同样也失败了。再一次,我知道这是不可能的。我的代码有什么问题??

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-12-02 20:31:55

您给出的每个示例urls都是一个重定向(http状态代码301或302)。您的代码仅将http状态代码2xx视为成功。添加另一个案例:

代码语言:javascript
运行
复制
when Net::HTTPRedirection then true

更新:请注意,使用HTTP HEAD而不是GET将通过网络传输较少的数据。

代码语言:javascript
运行
复制
uri = URI.parse(url)
response = Net::HTTP.start(uri.host, uri.port) {|http|
  http.head('/')
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1825174

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档