HTTP 100、101、102和103的強大功能 - httptoolkit
您知道HTTP請求可以接收多個響應狀態程式碼嗎?伺服器可以在最終狀態(200、404或任何可能的狀態)之前傳送不限數量的1XX碼。這些充當臨時響應,並且都可以包含自己的獨立標頭。
有幾種不同的1XX程式碼可用:100、101、102和103。它們並未得到廣泛使用,但是在某些利基用例中,它們具有一些強大的功能:
HTTP 100
HTTP 100是來自伺服器的響應,表明請求到目前為止是正確的,並且客戶端應該繼續執行。
在大多數情況下,這是無人值守的。如果您已經開始傳送請求,儘管獲得伺服器的支援和鼓勵總是很不錯的,但是您可能還是會繼續進行下去。
但是,如果傳送包含Expect: 100-continue標頭的請求,這將很有用。該標頭告訴伺服器,您希望得到100響應,您不會傳送完整的請求正文直至你接受到100響應。
傳送Expect: 100-continue可讓伺服器決定是否要接收客戶端請求的整個主體,因為這個主體內容這可能會花費大量時間/頻寬。如果URL和標頭足以使其已傳送響應(例如,拒絕檔案上傳),則這是一種快速而有效的方法。
HTTP 101
HTTP 101用於切換協議。它說:“我已經向您傳送了一個URL和標頭,現在我想對此連線做一些完全不同的事情”。不僅是一個不同的請求,而且是完全不同的協議。
主要用例是設定一個websocket。為此,客戶端傳送包含以下兩個標頭的請求:
Connection: upgrade Upgrade: websocket |
然後,如果伺服器接受,它將傳送如下響應:
HTTP/1.1 101 Switching Protocols Upgrade: websocket Connection: Upgrade |
然後從那裡開始,他們不再講HTTP,而是開始在此連線上交換原始Websocket資料。
此狀態還用於在同一連線上從HTTP / 1.1升級到HTTP / 2,您也可以使用它將HTTP連線轉換為各種其他基於TCP的協議。
也就是說,HTTP / 2不支援此狀態,HTTP / 2使用不同的協議協商機制和完全不同的機制來設定websocket(基本上在任何地方都不支援-websockets始終為HTTP / 1.1)。
HTTP 102
HTTP 102告訴客戶端伺服器仍在處理請求,它會回應很快。這與100的不同之處在於,現在已接收到整個請求,並且所有操作現在都在伺服器端發生,而客戶端只是在等待。
據我所知,這並沒有太多使用,它似乎主要是作為保持活動狀態存在的,以確保客戶端不會認為伺服器已經死了。它符合原始的HTTP規範,但已從許多新版本中刪除。
儘管如此,它仍在野外的真實環境中得到支援和使用,因此,如果有需要,很有可能在您的應用程式中使用它。
HTTP 103
同時,HTTP 103是一種新的流行狀態,旨在部分替代HTTP / 2的伺服器推送功能(現已從Chrome中刪除)。
使用HTTP 103,伺服器可以在完全處理請求併傳送其餘響應之前,儘早傳送一些標頭。這主要是用於傳遞連結標頭,例如Link: </style.css>; rel=preload; as=style,告知客戶端它可能希望儘早開始完整載入的其他內容(例如樣式表,JS和影像,用於Web頁面請求)。
當伺服器收到需要一些處理的請求時,它通常無法完全傳送響應頭,直到處理完成。HTTP 103允許伺服器立即推動客戶端並行下載其他內容,而無需等待請求的資源資料準備就緒。
相關文章
- 【複變函式】P102 103函式
- atest v0.0.18 提供了強大、靈活的 HTTP API Mock 功能HTTPAPIMock
- HttpSender OkHttp+RxJava超好用、功能超級強大的Http請求框架HTTPRxJava框架
- Chrome的強大搜尋功能Chrome
- .NET Framework 新功能和增強的功能Framework
- 強大的Flutter App升級功能FlutterAPP
- 功能強大的JavaScript引擎–SpiderMonkeyJavaScriptIDE
- 功能最強大的Oracle商務套件Oracle套件
- bpython:功能強大的Python shellPython
- 功能強大的網路管理軟體
- Web效能最佳化101:JS,CSS,HTTP,影像和字型WebJSCSSHTTP
- 功能強大的輪播器-SBCycleScrollViewView
- 比@EnableMongoAuditing功能強大的實現Go
- SuperSpider——打造功能強大的爬蟲利器IDE爬蟲
- sygate功能強大的Internet共享軟體
- 設計師眼中功能強大的XcodeXCode
- 功能強大介面友好的加密程式,TrueCrypt加密
- thumbor:功能強大的圖片處理庫
- 功能強大!帶你走近Smartbi增強分析模組
- reqwest:簡單而強大的 Rust HTTP 客戶端RustHTTP客戶端
- Spring 4.3 的新功能和增強Spring
- 功能強大的三維包裝設計工具
- 七種功能強大的聊天機器人平臺機器人
- 103-字串的定義和操作字串
- 尼康也要出智慧表了:功能強大
- SAP MM 移動型別101與103+105組合混用?型別
- 功能強大的檔案搜尋工具:ProFind mac版Mac
- 十四個功能強大的 Android 引導檢視Android
- 讓Docker功能更強大的10個開源工具Docker開源工具
- 20 個強大圖象處理功能的 SVG 工具SVG
- JpGraph簡介 --功能超級強大的PHP畫相簿PHP
- .NET 開源的功能強大的人臉識別 APIAPI
- Laravel框架的基石就是一個功能強大的 IoC 容器Laravel框架
- http://39.101.167.253/d/NOIPhis/p/101HTTP
- 100 款支援 .NET 多版本的強大 WPF 控制元件庫控制元件
- Proxyman Mac版中文資源:強大的HTTP除錯代理工具MacHTTP除錯
- Probius:一個功能強大的自定義任務系統
- Flutter 自定義功能強大的下拉篩選選單 packageFlutterPackage