作者回复: 只识别http/1.0的代理服务器,是不认识Host头部的,但它会识别绝对URI包括里面的域名。 WL你学习过《Nginx核心知识100讲》,你可以试验下用telnet构造请求,Nginx如果找到绝对URI中的域名,就不会使用Host中的域名。所以URI中域名优先级更高。
作者回复: 呃,这种不是URI中的域名,这是工具使用了域名,通过DNS解析出IP,再建立TCP连接。所谓URI中的域名,不是这种格式,你再看下12课,其中,request target中有四种格式,其中一种叫absolute-form,这才是URI中的域名。https://tools.ietf.org/html/rfc7230#page-42
作者回复: 有的,你再仔细看看。通常在Request Headers那一部分,如果你用的是http2协议,那么名称会从Host改为Authority。除非它不是独立请求,而是嵌入到别的请求中的一些编码,那种是没有的。
作者回复: 不同的服务器实现不同。当前最广泛使用的Nginx发现冲突时,以请求行中的域名为准,忽略Host头部,不会返错。 构造请求参看课程中介绍过后telnet或者curl工具,服务器搭建选择好后再参看相应教程。