HTTP2-Settings标头字段的内容是SETTINGS帧的有效负载(第6.5节)
和
收到101响应后,客户端必须发送一个连接前言(第3.5节),其中包括一个SETTINGS帧
我的问题是为什么客户端两次向服务器发送SETTINGS帧?谢谢。
HTTP / 2非常着重于其他设置之前交换设置,因此,我的印象是HTTP2-Settings是在服务器甚至接受切换到HTTP / 2之前向服务器通知客户端的情况。
第二个SETTINGS帧可能是为了保持统一,因此,从HTTP / 1.1升级完成后,将有一个以SETTINGS开头的统一HTTP / 2会话,该会话将通过TLS + ALPN或通过纯HTTP / 2进行,以前的知识。规范没有说哪个设置应该在任何框架(AFAICT)中进行,因此其中一个可以为空(规范3.5节中已对此进行了实际说明)。
这种冗余的代价很小:每个连接9字节,而从HTTP / 1.1升级的情况与在HTTP / 1.1升级的情况下,采用HTTP / 2的实现会略有不同。不是。
[注意,尽管某些工具实际上将通过普通连接使用HTTP / 2,但真正有趣的情况(例如,浏览器将始终使用TLS + ALPN。