在纯文本连接器上启用 HTTP/2

Posted

技术标签:

【中文标题】在纯文本连接器上启用 HTTP/2【英文标题】:Enabling HTTP/2 on the plain text connector 【发布时间】:2020-01-26 16:02:50 【问题描述】:

遵循启用 HTTP/2 的 Jetty 文档,

我到达了下一个步骤,

2015-06-17 14:16:12.549:INFO:oejs.ServerConnector:main: 开始 ServerConnector@6f32cd1eHTTP/1.1,[http/1.1, h2c]0.0.0.0:8080

来自文档,

目前没有主流浏览器支持纯文本 HTTP/2,所以 8080 port 将只能在 特定客户端 上使用 HTTP/2(例如 curl) 使用升级机制或假设 HTTP/2。

文档中提到了“特定客户端”,但我可以使用什么客户端来克服这个问题?我试过okHttpapache-httpclientokHttp不支持升级机制(AFAIK,如果不是这样就好了),apache-httpClient不支持h2

我基本上需要从我的程序向这个端点发出 GET/POST 请求(显然,使用 HTTP/2)。

简单来说,请推荐任何支持非加密http/2(h2c)的Java客户端

谢谢!

【问题讨论】:

你还需要在这个端口上支持 HTTP/1 吗? 是...支持使用相同端点的其他服务 您的客户端中支持非加密http/2的功能称为h2c,请查找。 @JoakimErdfelt 我找不到这样的 Java 客户端。这就是这个问题的目的。你用更好的方式解释了我的问题 > apache-httpClient 不支持 h2:此语句不正确。 【参考方案1】:

Apache HttpCore 和 HttpClient 5.0 支持h2h2c,但目前不支持http/1.1h2c 的升级机制。我不确定他们是否会这样做,因为目前还不清楚这种升级机制有多大用处。

代码示例请参考

http://hc.apache.org/httpcomponents-client-5.0.x/examples-async.html

HttpClient 4.5.x 到 HttpClient 5.0 升级指南请参考:

https://ok2c.github.io/httpclient-migration-guide/

【讨论】:

【参考方案2】:

Jetty 项目有一个 HTTP 客户端库,可用作 HTTP 客户端并支持 HTTP/2,包括明文和加密。

您想查看this 文档。

另请参阅 Jetty 项目如何将同一客户端用于 tests。

【讨论】:

以上是关于在纯文本连接器上启用 HTTP/2的主要内容,如果未能解决你的问题,请参考以下文章

使用 maven-jetty-plugin 启用 HTTP2

在纯 UEFI 中启动时谁启用了 A20 线?

Flutter for web:找不到 chrome 作为连接的设备。如何启用 chrome 作为连接设备开始在 web 上开发?

JavaScript链式连接函数?

苹果电脑启用windows系统时连接不上无线网怎么办?

远程桌面连接不上怎么办有啥办法