HTTP2:如何表明对它的支持?是否有#34;替代协议"对于HTTP2?

时间:2015-09-22 16:22:18

标签: http2

所以我刚刚升级到支持HTTP2的nginx 1.9.5。

我已将所有listen spdy替换为listen http2,删除了spdy_headers_comp指令并删除了add_header Alternate-Protocol 443:npn-spdy/3;

然后我在Firefox中打开了我的网站,打开了网络监视器,瞧瞧:Version: HTTP/2.0

但Firefox如何知道我的网站支持HTTP2?在尝试HTTP1.1之前,它是否始终首先尝试通过HTTP2连接?

1 个答案:

答案 0 :(得分:5)

HTTP/2网站部署在TLS上。

浏览器使用名为ALPN的TLS扩展来告诉服务器他们可以说什么协议。 浏览器总是发送此TLS扩展,并始终包含HTTP / 2和HTTP / 1.1(也可能包括旧的SPDY协议)。

服务器接收浏览器可以说的协议列表,如果服务器支持HTTP / 2(并且如果满足许多其他条件 - 特别是关于TLS协议版本和密码套件),服务器决定与浏览器说HTTP / 2,并使用ALPN扩展将所选协议发送回浏览器。

如果服务器不支持HTTP / 2,那么它将向浏览器发送它只能通过ALPN扩展名说HTTP / 1.1。

如果服务器不支持ALPN扩展,则它不会将其发送到浏览器,浏览器将默认向该服务器说HTTP / 1.1。