目錄
HTTP響應報文格式
一. 狀態行
狀態碼與狀態碼描述
二. 響應頭
Cookie原理
一. 前因
二. Cookie的狀態管理
結束語
HTTP響應報文格式
HTTP響應報文分為四部分
- 狀態行:包含三部分:協議版本,狀態碼,狀態碼描述
- 響應頭:響應體的一些屬性信息
- 空行:由回車符和換行符組成---\r\n
- 響應體(有效載荷):響應給請求方的內容,如網頁,視頻,音頻等
PS:我們訪問騰訊網其中的每一個可以點擊的鏈接,都會發起一次HTTP請求
一. 狀態行
狀態行包含三部分,彼此之間使用空格分隔
協議版本是服務器使用的HTTP的協議版本。方便和客戶端的HTTP協議進行版本兼容
狀態碼與狀態碼描述
類別 | 原因短語 | |
1XX | Informational(信息性狀態碼) | 接收的請求正在處理 |
2XX | Success(成功狀態碼) | 請求正常處理完畢 |
3XX | Redirection(重定向狀態碼) | 需要進行附加操作以完成請求 |
4XX | Client Error(客戶端錯誤狀態碼) | 服務器無法處理請求 |
5XX | Server Error(服務器) | 服務器處理請求出錯 |
- 2XX狀態碼
- 表示服務器已成功收到請求并進行處理
狀態碼 | 狀態碼英文名稱 | 中文描述 |
200 | OK | 請求成功。一般與GET與POST請求 |
201 | Created | 已創建。成功請求并創建了新的資源。通常用于POST或PUT請求 |
- 3XX狀態碼
- 表示服務器要求客戶端重定向,需要客戶端進一步的操作已完成資源的請求
狀態碼 | 狀態碼英文名稱 | 中文描述 |
301 | Moved Permanently | 永久移動。請求的資源已經被永久的移動到新的URL,返回信息會包括新的URL,瀏覽器會自動定向到新URL。今后任何新的請求都應使用新的URL替代 |
302 | Found | 臨時移動。與301類似。但資源只是被臨時移動。客戶端應繼續原有URL訪問 |
304 | Not Modified | 未修改。所請求的資源未修改,服務器返回狀態碼時,不會返回任何資源(響應信息中不包含響應體)。客戶端通常會緩存訪問過的資源 |
- 4XX狀態碼
- 表示客戶端的請求有非法內容
狀態碼 | 狀態碼英文名稱 | 中文描述 |
401 | Unauthorized | 當前請求需要用戶驗證 |
403 | Forbidden | 服務器已經理解請求,但拒絕執行 |
404 | Not Found | 請求失敗。服務器無法根據客戶端的請求找到資源(網頁) |
408 | Request Timeout | 請求超時。服務器等待客戶端發送的請求時間過長,超時 |
400 | Bad Request | 1. 語義有誤,當前請求無法被服務器理解。除非進行修改,否則客戶端不應該重復提交這個請求 2. 請求參數有誤 |
- 5XX狀態碼
- 表示服務器未能正常處理客戶端的請求而出現意外錯誤
狀態碼 | 狀態碼英文名稱 | 中文描述 |
500 | Internal Server Error | 服務器遇到了不知道如何處理的情況。 |
501 | Not Implemented | 此請求方法不被服務器支持且無法被處理。只有GET和HEAD是要求服務器支持的,它們必定不會返回此錯誤代碼。 |
503 | Service Unavailable | 服務器沒有準備好處理請求。由于超載或系統維護,服務器暫時的無法處理客戶端的請求。 |
常見的狀態碼比如200(OK),404(Not Found),403(Forbidden),302(Redirect 重定向),504(Bad Gatewat)
完整的響應狀態碼及描述可以參看MDN官方文檔:HTTP 響應狀態碼 - HTTP | MDN
補充:重定向
訪問網頁的不僅有用戶,還有爬蟲。永久重定向的應用之一就是服務搜索引擎。當搜索引擎爬蟲到一個永久重定向的網頁,就會將新的URL替代原先的URL,不需要每次都重定向
二. 響應頭
響應頭都是以KV關系保存的信息,包含附加動作,響應體(有效載荷)的屬性等
常見的響應頭:
Content-Length:響應體(有效載荷)的長度
Content-Type:響應體(有效載荷)的類型(網頁,圖片,音頻等)
Content-Language:響應體(有效載荷)的語言環境
Content-Encoding:響應體(有效載荷)的壓縮格式
Location:重定向的位置,新的URL地址、配合301,304使用
Connection:如Keep-Alive,表示保持tcp連接不關閉
referer:當前頁面是從哪個頁面跳轉過來的
Set-Cookie:返回sid,供客戶端下次訪問使用
Cookie原理
一. 前因
HTTP是無狀態協議,它不對之前發生的請求和響應的狀態進行管理。也就是說,無法根據之前的狀態進行本次的請求處理
上述現象導致,比如訪問B站,VIP視頻需要登錄驗證,但每換一個VIP視頻都需要登錄驗證一次,因為無法根據之前的登錄狀態進行本次請求處理。這顯示是不能接受的
二. Cookie的狀態管理
圖片來自網絡
Cookie是服務端生成的,保存在客戶端。Cookie有兩種保存方法:
- 內存級:保存瀏覽器運行的內存中
- 文件級:(1). 持久,需要手動清理 (2). 非持久,有過期時間
客戶端(瀏覽器)將Cookie保存,并在后續的訪問中,將Cookie攜帶在HTTP請求報文中
結束語
本篇博客到此結束,感謝看到此處。
歡迎大家糾錯和補充
如果覺得本篇文章對你有所幫助的話,不妨點個贊支持一下博主,拜托啦,這對我真的很重要。