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框架
- http://39.101.167.253/d/NOIPhis/p/101HTTP
- Web效能最佳化101:JS,CSS,HTTP,影像和字型WebJSCSSHTTP
- Chrome的強大搜尋功能Chrome
- SAP MM 移動型別101與103+105組合混用?型別
- 功能強大的輪播器-SBCycleScrollViewView
- 強大的Flutter App升級功能FlutterAPP
- 比@EnableMongoAuditing功能強大的實現Go
- 功能強大的網路管理軟體
- 103-字串的定義和操作字串
- reqwest:簡單而強大的 Rust HTTP 客戶端RustHTTP客戶端
- thumbor:功能強大的圖片處理庫
- 七種功能強大的聊天機器人平臺機器人
- 功能強大的三維包裝設計工具
- 100 款支援 .NET 多版本的強大 WPF 控制元件庫控制元件
- 功能強大!帶你走近Smartbi增強分析模組
- Laravel框架的基石就是一個功能強大的 IoC 容器Laravel框架
- IINA Mac功能強大的免費影片播放器Mac播放器
- 功能強大的檔案搜尋工具:ProFind mac版Mac
- .NET 開源的功能強大的人臉識別 APIAPI
- 功能強大的程式設計和數學計算軟體:MATLAB R2023b程式設計Matlab
- Proxyman Mac版中文資源:強大的HTTP除錯代理工具MacHTTP除錯
- Eclipse的編輯功能非常強大,掌握了Eclipse快捷鍵Eclipse
- 開源推薦,靈活多變功能強大的CMDB
- Probius:一個功能強大的自定義任務系統
- Flutter 自定義功能強大的下拉篩選選單 packageFlutterPackage
- Pocket cleaner Pro for Mac 功能強大的系統清理應用Mac
- Capture One Pro 20 功能強大的raw影像處理工具APT
- sublime text Mac版功能強大的程式碼編輯器Mac
- swoole 的認識和強大之處
- 強大的CSS:顏色、背景和剪下CSS
- 基於HTTP的功能追加協議HTTP協議
- http線上代理的功能有哪些HTTP
- SmartCode—不僅僅是功能強大的程式碼生成器
- Process Hacker一款功能強大的系統偵錯程式
- 強大且功能豐富的Python開發工具:PyCharm Pro 2023PythonPyCharm