我在试着看看有没有网址。下面是我这样做的代码:
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,所以我也尝试了这个网址,同样也失败了。再一次,我知道这是不可能的。我的代码有什么问题??
发布于 2009-12-02 20:31:55
您给出的每个示例urls都是一个重定向(http状态代码301或302)。您的代码仅将http状态代码2xx视为成功。添加另一个案例:
when Net::HTTPRedirection then true更新:请注意,使用HTTP HEAD而不是GET将通过网络传输较少的数据。
uri = URI.parse(url)
response = Net::HTTP.start(uri.host, uri.port) {|http|
http.head('/')
}https://stackoverflow.com/questions/1825174
复制相似问题