看了下百度 https 网址既提供 http2 也提供 http1.1, 怎样指定 http2 呢. 使用 curl 怎么指定参数都无效 浏览器也是 http1.1

2022-01-11 10:46:08 +08:00
 jdz
2140 次点击
所在节点    程序员
9 条回复
ysc3839
2022-01-11 10:50:54 +08:00
那就说明不支持吧
aladdinding
2022-01-11 10:51:53 +08:00
ssl 握手中有个啥扩展 可以协商接下来使用啥协议 如果支持 h2 服务端就会返回支持 h2
unco020511
2022-01-11 11:00:05 +08:00
Connection: Upgrade, HTTP2-Settings
Upgrade: h2c
检索关键词: http 协议升级协商机制
yaoyao1128
2022-01-11 11:09:23 +08:00
多个网站测都是:www.baidu.com
HTTP/2 protocol is not supported.

ssllabs 测试:
ALPN Yes http/1.1
NPN Yes http/1.1

本地测试:
```bash
> is-http2 www.baidu.com
× HTTP/2 not supported by www.baidu.com
> curl -sI --http2 百度 |grep HTTP
HTTP/1.1 200 OK
```
所以暂时应该是不支持……猜测是向下兼容 IE 所以不能直接升级,SSL3 和 TLS1.0 可能有 bug ?
darknoll
2022-01-11 11:19:09 +08:00
你说的 http2 是 cdn 来的吧
jdz
2022-01-11 11:21:13 +08:00
@yaoyao1128 我用的 curl -v 查看的,offerring http2 ,然后跟着 offering hpttp1.1 ,你可以试试
2i2Re2PLMaDnghL
2022-01-11 11:26:43 +08:00
ALPN 信息不代表真实提供的选项
2i2Re2PLMaDnghL
2022-01-11 11:32:39 +08:00
我再看了一遍
offering 似乎说的是你在 ClientHello 的时候 offer 了 h2 和 http/1.1
之后 ALPN, server accepted to use http/1.1

可以看一下 rfc7301
ClientHello 的时候提供 list of protocols ,ServerHello 的时候提供 selected protocol 并开始密钥交换
yaoyao1128
2022-01-11 11:35:45 +08:00
@jdz ALPN 的过程是这样的
* ALPN, offering h2
* ALPN, offering http/1.1
* ALPN, server accepted to use http/1.1
这里是 Client 给 server 发一个列表 说我支持什么 之后 server 从里面选择一个进行返回 说我支持这个我们用这个交换 然后 server 给 client 说我的证书是怎么怎么的
所以说 alpn 的前两个是客户端能提供(或者说 能处理)的协议 相比较 npn 多了一个 hello 的过程确定协议
alpn 是 rfc7301 的内容
datatracker.ietf.org/doc/html/rfc7301

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/827504

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX