【網絡協議】【http】http 簡單介紹
1 HTTP 頭部
HTTP 是一種請求-響應協議,客戶端向服務器發送請求,服務器返回響應。
1.1 HTTP 狀態碼
狀態碼是服務器返回給客戶端的 三位數字代碼,用于表示請求的執行結果。
狀態碼按照首位數字分類:
類別 | 范圍 | 描述 |
---|---|---|
1xx | 100-199 | 信息性狀態碼(Informational),表示請求已接收,服務器繼續處理 |
2xx | 200-299 | 成功狀態碼(Success),表示請求被成功處理 |
3xx | 300-399 | 重定向狀態碼(Redirection),需要客戶端采取進一步操作 |
4xx | 400-499 | 客戶端錯誤(Client Error),表示請求有錯誤 |
5xx | 500-599 | 服務器錯誤(Server Error),表示服務器無法處理請求 |
1xx
提示信息
2xx
成功信息
- [200 OK」
是最常見的成功狀態碼,表示一切正常。
如果是非HEAD請求,服務器返回的響應頭都會有 body 數據。 - [204 No Content」也是常見的成功狀態碼,與 200 OK 基本相同
但響應頭沒有 body 數據。 - [206 Partial Content」是應用于 HTTP 分塊下載或斷點續傳,表示響應返回的 body 數據并不是資源的全部,而是其中的一部分,也是服務器處理成功的狀態。
3xx
重定向,狀態碼表示客戶端請求的資源發生了變動,需要客戶端用新的 URL 重新發送請求獲取資源
- [301 Moved Permanently」表示永久重定向,說明請求的資源已經不存在了,需改用新的 URL 再次訪問。
- [302 Found」表示臨時重定向,說明請求的資源還在,但暫時需要用另一個 URL 來訪問
- [304 Not Modified」不具有跳轉的含義,表示資源未修改,重定向已存在的緩沖文件,也稱緩存重定向,也就是告訴客戶端可以繼續使用緩存資源,用于緩存控制。
4xx
客戶端發送的報文有誤,服務器無法處理,也就是錯誤碼的含義。
- [400 Bad Request」表示客戶端請求的報文有錯誤,但只是個籠統的錯誤。
- [403 Forbidden」表示服務器禁止訪問資源,并不是客戶端的請求出錯。
- [404 Not Found」表示請求的資源在服務器上不存在或未找到,所以無法提供給客戶端.。
5xx
客戶端請求報文正確,但是服務器處理時內部發生了錯誤,屬于服務器端的錯誤碼。
- [500 Internal Server Error」與 400 類型,是個籠統通用的錯誤碼,服務器發生了什么錯誤,我們并不知道。
- [501 Not lmplemented」表示客戶端請求的功能還不支持,類似“即將開業,敬請期待”的意思。
- [502 Bad Gateway」通常是服務器作為網關或代理時返回的錯誤碼,表示服務器自身工作正常,訪問后端服務器發生了錯誤。
- [503 Service Unavailable」表示服務器當前很忙,暫時無法響應客戶端,類似“網絡服務正忙,請稍后重試“的意思。
1.2 HTTP 頭部屬性
1.2.1 請求頭(Request Headers)
請求頭包含客戶端發送給服務器的元信息,例如請求方法、資源路徑、客戶端信息等。
頭字段 | 英文名稱 | 示例值 |
---|---|---|
請求方法 | Method | GET / POST / PUT / DELETE |
請求資源URL | Request-URI | /index.html / /api/data |
協議版本 | HTTP Version | HTTP/1.1 |
客戶端使用程序 | User-Agent | Mozilla/5.0 (Windows NT 10.0; Win64; x64) |
服務器域名 | Host | www.example.com |
連接方式 | Connection | keep-alive / close |
接受數據格式 | Accept | text/html, application/json |
接受壓縮格式 | Accept-Encoding | gzip, deflate, br |
發送 Cookie | Cookie | sessionid=abcd1234 |
… | … | … |
1.2.2 響應頭(Response Headers)
頭字段 | 英文名稱 | 示例值 |
---|---|---|
協議版本 | HTTP-Version | HTTP/1.1 |
狀態碼 | Status-Code | 200 |
狀態信息 | Status-Message | OK |
目標服務器 | Server | nginx/1.18.0 |
數據長度 | Content-Length | 1024 |
數據格式 | Content-Type | text/html; charset=UTF-8 |
數據壓縮方法 | Content-Encoding | gzip |
設置 Cookie | Set-Cookie | sessionid=abcd1234; Path=/; HttpOnly |
… | … | … |
后續會寫一下 http 1.0 1.1 2 3 如果有時間的話