作者:太2真人05 | 来源:互联网 | 2022-12-01 12:57
我不明白,host
输入网址时如何强制浏览器包含标头?根据我的观察,访问某些URL时host
将包含标头,但不包含标头。
如下访问stackoverflow的示例:
我不明白,我们如何控制其行为以包含host
名称?如果我有多个使用相同IP的子域,则无法区分我要访问哪个应用。
1> Josh Cooley..:
Stackoverflow使用HTTP / 2,它使用:authority标头而不是host。如果您在右侧滚动,则可以看到它。
有关更多信息,请参见RFC7540:
“为了确保可以正确再现HTTP / 1.1请求行,从具有原始或星号形式请求目标的HTTP / 1.1请求进行转换时,必须忽略此伪标题字段。直接生成HTTP / 2请求的客户端应该使用“:authority”伪头字段而不是主机头字段,如果请求中不存在一个将请求从HTTP / 2请求转换为HTTP / 1.1的中介,则该中介必须创建一个主机头字段,方法是复制“:authority”伪标题字段。”
如果我有多个使用相同IP的子域,则无法区分我要访问哪个应用。
Stackoverflow还使用HTTPS。Web服务器可以基于TLS握手中传递的SNI扩展路由到正确的域。
https://www.globalsign.com/cn/blog/what-is-server-name-indication/
“在HTTP站点上,服务器使用HTTP HOST标头确定应显示的HTTP网站。但是,在使用TLS(HTTPS背后的协议)时,需要先建立安全会话,然后才能建立HTTP会话,直到此为止,没有主机头。
...
服务器名称指示(SNI)是TLS协议的扩展。客户端使用TLS握手中的SNI扩展名指定要连接的主机名。这允许服务器(例如Apache,Nginx或诸如HAProxy之类的负载平衡器)从列表或数据库中选择建立连接所需的相应私钥和证书链,同时将所有证书托管在一个IP地址上。 ”