有一些方法可以使用特定的http版本协议在ruby中发送http请求。
我使用net / http但默认(可能是硬编码)版本是1.1。
是否可以转向1.0?
答案 0 :(得分:0)
覆盖Net::HTTP::HTTPVersion
(默认为'1.1'
)似乎有效:
require 'net/http'
Net::HTTP.send(:remove_const, :HTTPVersion) # avoid warning
Net::HTTP::HTTPVersion = '1.0'
http = Net::HTTP.new('example.com')
http.set_debug_output($stdout)
http.get('/')
输出:
<- "GET / HTTP/1.0\r\nAccept-Encoding: gzip;q=1.0,deflate;q=0.6,identity;q=0.3\r\nAccept: */*\r\nUser-Agent: Ruby\r\nConnection: close\r\nHost: example.com\r\n\r\n"
-> "HTTP/1.0 200 OK\r\n"
-> "Accept-Ranges: bytes\r\n"
-> "Cache-Control: max-age=604800\r\n"
-> "Content-Type: text/html\r\n"
-> ...
发送GET / HTTP/1.0
,服务器以HTTP/1.0 200 OK
回答。请注意,HTTP / 1.1标头(例如Host: example.com
)仍然存在。