我有一些远程REST API通过HTTP2运行。它使用证书运行SSL。目标是通过代理通过HTTP2发送和接收带有SSL证书的数据。通过PROXY HTTP2请求,红宝石
还有http-2 & net-http2允许使用HTTP2发送请求的gem。但是代理呢?在标准的Net :: HTTP库中,除了通过代理服务器发送请求的事实外,还有一个子类Net :: HTTP :: Proxy,它重复了父类的Net :: HTTP类的行为。但HTTP2宝石不支持它。
该关闭的想法,我想出了是让类似代理实现的http1.1东西 - 写“主持人:”和“代理授权:”字段插座,净-Http2宝石用途:
@socket.writeline sprintf('CONNECT %s:%s HTTP/%s',
@address, @port, HTTPVersion)
@socket.writeline "Host: #{@address}:#{@port}"
if proxy_user
credential = ["#{proxy_user}:#{proxy_pass}"].pack('m')
credential.delete!("\r\n")
@socket.writeline "Proxy-Authorization: BasiC#{credential}"
end
@socket.writeline ''
但它结束了:
SSL_connect SYSCALL returned=5 errno=0 state=SSLv2/v3 read server hello A
我可能会错过一些技术知识来实现这一点,所以相关的研究方向任何帮助表示赞赏。