如何使用带有 HTTP/2 的 HttpClient 强制使用“Host”标头?

问题描述 投票:0回答:1

我需要有一个“主机”标头并向需要该标头的自定义服务器发出 HTTP/2 请求。

当我使用 HTTP/1.1 请求时,标头存在,但一旦我这样做,

DefaultRequestVersion = new Version(2, 0)
它就会消失,我正在使用 mitmproxy 来检查它。

我尝试过

DefaultRequestHeaders.Add("host", "somespecifichost")
,但它被 HTTP/2 忽略。

我可以尝试什么来强制执行标头?

c# .net-core http-headers http2
1个回答
0
投票

如果您无法强制客户端发送

Host
标头,您的另一个选择是尝试在服务器上合成它,然后再到达应用程序。

根据您使用的服务器,它可能会提供一些“拦截”机制,允许您根据请求的某些其他元素添加标头。

在本例中,您希望从 HTTP/2 伪标头

Host
合成
:authority
标头。

另一种选择是在服务器之前访问反向代理。

反向代理可以卸载 TLS,合成

Host
标头,然后以明文 HTTP/2 调用服务器(或以明文 HTTP/1.1 重新编码请求)——无需重新编码-加密,尽管你可以。

© www.soinside.com 2019 - 2024. All rights reserved.