Go语言 如何读取http2伪字段

lx0bsm1f  于 5个月前  发布在  Go
关注(0)|答案(2)|浏览(61)

我有一个http 2处理程序,它接收http 2请求。现在我需要访问请求中的:authority pseudoheader字段。如何去做?我知道以下几个选项:
1.劫持http连接->但我不想失去http层的功能,这真的是一个矫枉过正。所有我需要的只是伪头字段的值。
1.获取底层的tcp conn而不劫持它并从中读取帧。->现在,如何做到这一点?一种方法可能是在http.Server.ConnState中获取tcp conn(但我认为这并不能保证。我经常发现连接关闭,并且在任何情况下我都觉得这非常麻烦)。
有没有办法,只提取伪域?

hpcdzsge

hpcdzsge1#

在http.Request中的Host在某种意义上是这样做的,它将:authority读入r.Host字段。2但是其他字段很难掌握。

zlhcx6iw

zlhcx6iw2#

下面是从http.Request字段到http2伪头的Map:

req.Host       => :authority 
req.Method     => :method 
req.RequestURI => :path        // if :method != "CONNECT"
req.RequestURI => :authority   // if :method == "CONNECT"

字符串
您可以在以下位置的源代码中找到相关代码:
https://ref.gotd.dev/src/net/http/h2_bundle.go.html#line-5738https://ref.gotd.dev/src/net/http/h2_bundle.go.html#line-5803

相关问题