ruby中使用特定http版本协议发送http请求

vty*_*pal 5 ruby http version

有一些方法可以在 ruby​​ 中使用特定的 http 版本协议发送 http 请求。

我使用 net/http 但默认(可能是硬编码)版本是 1.1。

有什么办法可以转向1.0吗?

Ste*_*fan 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)仍然存在。