C'est exactement ce méthode HTTP HEAD fait.
Pour Ruby, il y a une belle gemme, beaucoup plus simple que le bas niveau/http qui vous permet d'effectuer HEAD demandes.
gem install rest-open-uri
puis
irb> require 'rubygems'
=> true
irb> require 'rest-open-uri'
=> true
irb> sio = open("http://stackoverflow.com", :method => :head)
=> #
irb> sio.meta
=> {"expires"=>"Tue, 30 Nov 2010 18:08:47 GMT", "last-modified"=>"Tue, 30 Nov 2010 18:07:47 GMT", "content-type"=>"text/html; charset=utf-8", "date"=>"Tue, 30 Nov 2010 18:08:27 GMT", "content-length"=>"193779", "cache-control"=>"public, max-age=18", "vary"=>"*"}
irb> sio.status
=> ["200", "OK"]
Il suit redirections. Vous devez sauver pour SocketError quand l'hôte n'existe pas ou OpenURI :: HTTPError si le fichier n'existe pas. Si vous voulez quelque chose de plus puissant, jetez un oeil à Mechanize ou HTTParty.
J'ai lutté cela depuis un certain temps maintenant et c'est la réponse la plus propre que j'ai jamais vu – dabobert