有一些方法可以在 ruby 中使用特定的 http 版本协议发送 http 请求。
我使用 net/http 但默认(可能是硬编码)版本是 1.1。
有什么办法可以转向1.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('/')
Run Code Online (Sandbox Code Playgroud)
输出:
<- "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"
-> ...
Run Code Online (Sandbox Code Playgroud)
发送A GET / HTTP/1.0
,服务器用 应答HTTP/1.0 200 OK
。请注意,HTTP/1.1 标头(例如Host: example.com
)仍然存在。