鉴于在发送HTTP请求时已建立TCP连接,因此隐式知道IP地址和端口 - TCP连接是IP +端口.那么,为什么我们需要Host标题?这是否只有在多个主机映射到TCP连接中隐含的IP地址的情况下才需要?
我正在使用Jakarta Commons HttpClient 3.1编写一个负载测试工具,该工具需要针对不同的服务器,并假装它针对HTTP服务器中的正确虚拟主机.为此,我需要能够将请求中的"主机"HTTP标头设置为不同的主机名,然后是我要连接的实际主机名.
看起来很明显我应该使用Method.setRequestHeader("Host","fakehostname"),但HttpClient只是忽略了这一点,并且总是在"Host"标题中发送我正在连接的真实主机名(我已启用"httpclient.wire"的调试日志记录,我可以这样做具体而言).
如何覆盖标题以便HttpClient注意?