Ruby에서 net/http (s) 또는 open-uri 요청에 의해 전송 될 HTTP 요청 헤더를 실제로 확보하려면 어떻게해야합니까? 요청을합니다.요청하기 전에 Ruby Net :: HTTP 요청에서 헤더 가져 오기
URI에 서명 된 문자열을 만들 때 헤더가 사용되는 경우가 있습니다. 분명히 보낼 요청 헤더를 얻을 수있는 방법이 있습니다. 여기에는 예를 들어 "Host :"헤더가 포함되어야합니다.
Ruby에서 net/http (s) 또는 open-uri 요청에 의해 전송 될 HTTP 요청 헤더를 실제로 확보하려면 어떻게해야합니까? 요청을합니다.요청하기 전에 Ruby Net :: HTTP 요청에서 헤더 가져 오기
URI에 서명 된 문자열을 만들 때 헤더가 사용되는 경우가 있습니다. 분명히 보낼 요청 헤더를 얻을 수있는 방법이 있습니다. 여기에는 예를 들어 "Host :"헤더가 포함되어야합니다.
Net :: HTTP 클래스는 모두 Net :: HTTPHeader를 mixin으로 사용하는 것 같습니다. 요청 객체에 to_hash()을 사용하면 모든 헤더를 한 번에 가져올 수 있고 each_header()/each()을 사용하면 한 번에 하나의 헤더를 반복 할 수 있습니다.
잘 루비 2.0.0에서 http://ruby-doc.org/stdlib-2.0/libdoc/net/http/rdoc/Net/HTTP.html#label-Setting+Headers
작품을 볼 수 -하지만 당신은 루비 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
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
위의 내용은 명시 적으로 설정된 헤더 목록을 얻는 데 도움이되지만, adva에 포함 시킬지 확실하지 않습니다. nce 추가 헤더 Net :: HTTP는 요청을 전송하는 순간에 추가 할 수 있습니다 ('Host'는 완벽한 예제입니다 ...이 헤더는 마지막 순간에만 자동 생성됩니다). –
흠 .. 그래, 그게 내 걱정이야. each_header가 이미 발견되었습니다. URI 문자열의 "Host :"헤더를 사용하게되어서 기쁩니다.하지만 다른 헤더가 자동으로 생성되어 놓칠 수도 있습니다. – rewolf