繁体   English   中英

在发出请求之前从Ruby Net :: HTTP请求获取标头

[英]Getting Headers from a Ruby Net::HTTP Request before making the request

在Ruby中,如何在实际发出请求之前获取将由net / http或open-uri请求发送的HTTP请求标头。

在某些情况下,在URI中创建签名字符串时会使用标头。 当然有一些方法可以获取将要发送的请求标头。 例如,这些应该包括“Host:”标题。

http://ruby-doc.org/stdlib-2.0/libdoc/net/http/rdoc/Net/HTTP.html#label-Setting+Headers

在ruby 2.0.0中运行良好 - 但你在1.9.3中是正确的,不同的行为

Ruby 2.0.0

require 'net/http'
uri = URI('http://github.com/ruby')

http_request = Net::HTTP::Get.new(uri)
http_request.each_header { |header| puts header }

# => accept-encoding
# => accept
# => user-agent
# => host    

http_response = Net::HTTP.start(uri.hostname, uri.port) do |http|
  http.request(http_request)
end

Ruby 1.9.3

require 'uri'
require 'net/http'
uri = URI.parse('http://github.com/ruby')

http_request = Net::HTTP::Get.new(uri.path)
http_request.each_header { |header| puts header }

# => accept
# => user-agent

http_response = Net::HTTP.start(uri.hostname, uri.port) do |http|
  http.request(http_request)
end

http_request.each_header { |header| puts header }

# => accept
# => user-agent
# => host

Net :: HTTP类似乎都使用Net :: HTTPHeader作为mixin。 您应该能够在请求对象上使用to_hash()一次获取所有标头,或者每次都使用each_header()/ each()来迭代一个标头。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM