瀏覽器發起http請求時候,如何知道伺服器支援什麼http 版本?

時間 2021-05-31 14:04:05

1樓:Sailim

這篇文章詳細的講述了當你在瀏覽器輸入http://Google.com

時發生的後續事情。

2樓:紳士喵

規範參考 RFC 7301。現存的實現一般是通過 ALPN 做到的(應用層協議協商),在 TLS 握手階段就能完成協議選擇了。ALPN 的前身是 Google 早期在 Chrome 中採用的NPN,後來被重製併入到標準中。

這些通過 Wireshark 抓包都能看到的(這張圖是我現搜的):

橘色方框就是 ALPN

如果存在非 TLS 環境下的 HTTP2,可能會使用乙個叫Upgrade的協議頭。

如果你在服務端故意把 HTTP1 的相容關掉了,然後在客戶端通過 HTTP1 訪問,可能會得到乙個告訴你不支援的 ALPN 協議的響應。

3樓:月迷津渡

首先 RFC 2616 早在 2014 年就已經被 HTTPWG 廢棄了,取而代之的是下面六個規範:

RFC 7230, HTTP/1.1: Message Syntax and Routing

RFC 7231, HTTP/1.1: Semantics and Content

RFC 7232, HTTP/1.1: Conditional Requests

RFC 7233, HTTP/1.1: Range Requests

RFC 7234, HTTP/1.1: Caching

RFC 7235, HTTP/1.1: Authentication

新的規範對原來很多模糊的地方做了詳細的解釋,所以題主可以看下 RFC 7230 中 2.6 Protocol Versioning 一節,應該能夠回答題主的問題。

Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing

簡單說下我的理解吧:

在初次通訊的時候,客戶端是不知道服務端支援的 HTTP 版本的,直接填寫自己支援的主流的最大的版本即可。當服務端收到請求後,如果支援的主版本號與請求的主版本號相同,即使支援的次版本號小於請求的次版本號,也是可以正常解析的,只不過會忽略不支援的較新版本的特性;如果服務端連主版本號也無法支援的話,可以直接返回 HTTP 505(HTTP Version Not Supported),並且應該附帶不支援的原因和其他支援的協議資訊。

如果在通過嘗試後,雙方能夠正常通訊,後續使用雙方都能正常支援的最大版本即可。

Microsoft Edge 瀏覽器如何匯出收藏夾?

不用那麼複雜,Edge瀏覽器的收藏夾可以在同一微軟賬戶間同步。如果是新安裝了系統或是Edge瀏覽器,登入使用後第二天就會同步,瀏覽器的收藏夾裡就會有之前的收藏內容。此外,Win10的14965.1001預覽版的Edge瀏覽器已經可以匯出收藏夾為.html檔案,供其它瀏覽器使用。 import jso...

如何遮蔽 Microsoft Edge 瀏覽器(2021 年 8 月 24 日)新建標籤頁的廣告?

cy yx 安裝擴充套件New Tab Changer New Tab Changer Microsoft Edge Addons 然後把新標籤頁設為chrome search local ntp local ntp.html 就行了效果圖 雲生 那為啥不用拓展呢,這是我的標籤頁,這個拓展可以說是非...

如何評價夸克瀏覽器3 0?

不好用,辣雞。乙個chrome套殼瀏覽器,自命簡潔快速高效的瀏覽器,實際上功能很不人性化,而且連書籤匯出功能也沒有,使用者只能進不便出,典型的網際網路公司 阿里巴巴 搶占流量的辣雞玩意。如圖所示,已經開始推送廣告了,這是瀏覽器該做的事嗎?不要安裝,趁早解除安裝,入chrome via x瀏覽器等等簡...