Ruby 请求具有基本身份的头
我想知道响应代码而不需要获得整个页面内容,所以我使用Ruby 请求具有基本身份的头,ruby,http-headers,Ruby,Http Headers,我想知道响应代码而不需要获得整个页面内容,所以我使用;request\u head。但我得到“401”,所以我需要传递登录/密码: require "net/http" uri = URI.parse "http://example.com/some_path" connection = Net::HTTP.new(uri.host, 80) connection.basic_auth "qwe", "rty" p connection.request_head uri.path 但我
;request\u head
。但我得到“401”,所以我需要传递登录/密码:
require "net/http"
uri = URI.parse "http://example.com/some_path"
connection = Net::HTTP.new(uri.host, 80)
connection.basic_auth "qwe", "rty"
p connection.request_head uri.path
但我明白了
temp.rb:9:in
':未定义的方法
basic#u auth',对于#您可以使用HEAD
HTTP动词
从RFC2616:
此方法(HEAD)可用于获取由请求>隐含的实体的元信息,而无需传输实体体本身。此方法通常用于测试超文本链接的有效性、可访问性和最近的修改
诸如此类:
require "net/http"
uri = URI('YOUR_URL')
req = Net::HTTP::Head.new(uri)
req.basic_auth('USERNAME', 'PASSWORD')
res = Net::HTTP.start(uri.hostname, uri.port) do |http|
http.request(req)
end
res
包含一个
对象。我设法将Get
的头传递给#request_头
,但其头散列值应展平:
get = Net::HTTP::Get.new url
get.basic_auth "qwe", "rty"
fixed_header = Hash[ get.to_hash.map{ |k,v| [k,v[0]] } ]
Net::HTTP.start(uri.hostname, uri.port) do |http|
p http.request_head(uri.path, fixed_header)
end
注意,如果您得到Errno::ECONNRESET:Connection reset by peer,只需将use_ssl选项添加到HTTP.start call Net::HTTP.start(uri.hostname,uri.port,use_ssl:uri.scheme==“https”)
get = Net::HTTP::Get.new url
get.basic_auth "qwe", "rty"
fixed_header = Hash[ get.to_hash.map{ |k,v| [k,v[0]] } ]
Net::HTTP.start(uri.hostname, uri.port) do |http|
p http.request_head(uri.path, fixed_header)
end