簡體   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