当前位置:首页 > Web开发 > 正文

它会直接返回 HTTP/1 的响应

2024-03-31 Web开发

此刻越来越多的网站开始使用 HTTPS,为了分析网站,有时就需要使用监听工具来记录网站的 HTTPS 请求。
最常用的工具固然是 Chrome DevTools,可有的时候我们需要分析非 Web 应用的请求,这时就只能用其他的要领了。

对付明文的 HTTP 协议,我们可以直接使用网络嗅探工具 Wireshark 进行抓包分析。

可此刻大家根基都开始拥有了必然的安适意识,HTTPS 已经成为主流,甚至连内网大家也要搞零信任安适架构
这种情况下,我们就只能使用网络代办代理工具,以中间人的身份进行请求分析了。

主流的监听工具

mitmproxy

Charles

fiddler

浏览器与处事器是如何协商使不使用 TLS/SSL,还有用哪个版本的 HTTP 的? 1. 用不用 HTTPS?

如果你用 HTTP 上知乎,,它会返回一个 301,重定向到 HTTPS.
之后浏览器就会记住这个网页撑持 HTTPS,在不给出协议 scheme 的情况下(在输入框只输入 zhihu.com),优先使用 HTTPS 访谒。

在 HTTPS 协议中,先成立 TCP 连接,然后在成立 TLS/SSL 连接前,会有一个加密要领协商,在此中浏览器和处事器协商具体的加密协议版本。

2. 用哪个版本的 HTTP?

在 HTTPS 通信中,之前说过连接成立前会有一个加密要领协商的法式。为了撑持 HTTP/2,在该协商法式中插手了 ALPN(Application Layer Protocol Negotiation,应用层协议协商)的拓展。

客户端在成立 TLS/SSL 连接的 Client Hello 握手中,会通过 ALPN 拓展列出本身撑持的各类应用层协议。然后处事端可以按需从中选择,并在 Server Hello 中指定具体要使用的协议。

而在 HTTP 通信或者不撑持 ALPN 的 HTTPS 通信中,可以通过 Connection: Upgrade 方法从 HTTP/1.x 升级到 HTTP/2.在 HTTP Upgrade 机制中,HTTP/2 的协议名称是 h2c:

GET / HTTP/1.1 Host: example.com Connection: Upgrade, HTTP2-Settings Upgrade: h2c HTTP2-Settings: <base64url encoding of HTTP/2 SETTINGS payload>

如果处事端不撑持 HTTP/2,它会直接返回 HTTP/1 的响应。否则就返回 101 switching.

HTTP/1.0

就处事器而言,即使它收到的是 HTTP/1.0 的请求,也会返回 HTTP/1.1 的响应。这也算是一种协商机制:处事器通过 HTTP/1.1 的响应通知客户端,我是撑持 HTTP/1.1 的。

因为 HTTP/1.0 和 HTTP/1.1 都是文本格局的协议,是兼容的,因此可以这样返回。但是 HTTP/2 是二进制协议,不兼容,就必需通过 ALPN 或 Upgrade 协商。

参考

谈谈 HTTP/2 的协议协商机制

HTTPS 协议与监听要领

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/32727.html