2016-03-08 55 views
0

我正在学习HTTP2,并使用在Chrome中正常工作的jetty开发了一个POC。当浏览器不支持http2时回退到http1.1

但是,当我在Firefox中点击相同的URL时,我的HTTP2 URL请求出现空白页面,并显示异常“您正试图查看的页面无法显示,因为无法验证接收到的数据的真实性。” 搜索后发现,在Firefox中,我必须从“about:config”启用network.http.spdy.enabled.http2。

我的问题是如果浏览器不支持HTTP2服务器或浏览器端是否有任何机制回退到HTTP1。

回答

2

Jetty如果客户端不支持HTTP/2,则支持回退到HTTP/1.1。

如果不查看服务器端代码,我猜测在配置ServerConnector时,您没有将HttpConnectionFactory作为工厂之一添加,因此您不会收回备用数据。此外,请记住,回退从TLS上的HTTP/2到TLS上的HTTP/1.1;换句话说,无论您使用的是HTTP/2还是HTTP/1.1,您都在“https”域中,并且您将保持在那里。 因此,您需要有适当的证书才能进行回退:您无法从加密的HTTP/2转到明文HTTP/1.1。

This example向您展示了如何正确设置一个正常工作的HTTP/2服务器,并回退到HTTP/1.1。