本文詳細介紹了Http報文之"請求報文"和"響應報文",歡迎閱讀 ,一起進步。
Hope this article can really let you know the request message and response message.
一、報文序言
HTTP協議簡介:超文本傳輸協議(英文:Hyper Text Transfer Protocol,縮寫:HTTP)是互聯網上應用最爲廣泛的一種網絡協議。
HTTP報文:它是HTTP應用程序之間發送的數據塊
。這些數據塊以一些文本形式的元信息開頭,這些信息描述了報文的內容及含義,後面跟着可選的數據部分。這些報文都是在客戶端、服務器和代理之間流動。
HTTP報文的流動方向:一次HTTP請求,HTTP報文會從“客戶端”流到“代理”再流到“服務器”,在服務器工作完成之後,報文又會從“服務器”流到“代理”再流到“客戶端”。
ps: 報文分爲請求報文和響應報文
請求報文:從客戶端發往服務器的報文叫請求報文。
響應報文:服務器收到請求報文後,作爲響應發往客戶端的報文稱爲響應報文。
二、請求報文
請求報文:它會向Web服務器請求一個動作
請求報文的格式:
起始行: <method> <request-URL> <version>
頭部: <headers>
主體: <entity-body>
請求報文包括三個部分,第一部分是請求行,第二部分是Headers,第三部分是Body。
詳細分析如下
①請求行
請求行包括三個部分,第一個是方法。常見的有get,post,put,delete。第二個是路徑,也就是服務器地址後面的部分,第三個是http的版本
。
比如 https://mp.csdn.net/users,這個users就是路徑,當前的主流版本是http 1.1。具體格式如下,
GET /users HTTP/1.1
②請求頭 Headers
Headers有很多,這裏只介紹一些常用的。
Content-Type:內容的類型
常見類型 | 含義 |
---|---|
text/html | 用於瀏覽器間響應 |
x-www-form-urlencoded | 純⽂本表單的提交⽅式 |
multitype/form-data | 含有⼆進制⽂件時的提交⽅式 |
application/json | json格式 |
Content-Length:指定 Body 的⻓度(字節)
Location:指定重定向的⽬標 URL
User-Agent:⽤戶代理,即是誰發送或接受響應的,可以用來區分瀏覽器發送的請求還是手機發送的請求。
③主體
報文主體就是報文的主要數據部分,它可以是任意數據類型的數據
。
比如請求主體中包含了要發給服務器的數據,響應主體中裝載了要返回給客戶端的數據。
起始行和首部都是文本化且具有特定結構的,主體則可包含所有二進制數據和文本。
三、響應報文
響應報文:它會將請求的結果返回給客戶端。
響應報文的格式:
起始行: <version> <status> <reason-phrase>
頭部: <headers>
主體: <entity-body>
響應報文也包括三個部分,第一部分是狀態行,第二部分是Headers,第三部分是Body。
①關於狀態行
狀態包括三個部分.第一個是http版本,常用的還是1.1。第二個是狀態碼,常見的有200,表示成功,404,表示找不到內容。第三個是狀態信息。
具體格式如:HTTP/1.1 200 OK
②響應頭部
與請求頭部類似,爲響應報文添加了一些附加信息。
常見響應頭部如下:
常見單詞 | 含義 |
---|---|
Server | 服務器應用程序軟件的名稱和版本 |
Content-Type | 響應正文的類型(是圖片還是二進制字符串) |
Content-Length | 響應正文長度 |
Content-Charset | 響應正文使用的編碼 |
Content-Encoding | 響應正文使用的數據壓縮格式 |
Content-Language | 響應正文使用的語言 |
③響應正文Body
服務器發送給客戶端的內容,也是客戶端所請求的內容。
請求報文和響應報文 參考圖解
狀態碼拓展
HTTP狀態碼被分成了五大類
。狀態碼爲客戶端提供了一種理解事務處理結果的便捷方式。
狀態碼 | 含義 |
---|---|
100~199 (信息性狀態碼) | HTTP/1.1向協議中引入了信息性狀態碼 |
200~299 (成功狀態碼) | 客戶端發起請求時,這些請求通常都是成功的。服務器有一組用來表示成功的狀態碼,分別對應於不同類型的請求 |
300~399 (重定向狀態碼) | 重定向狀態碼要麼告知客戶端使用替代位置來訪問他們所感興趣的資源,要麼就提供一個替代的響應而不是資源的內容 |
400~499 (客戶端錯誤狀態碼) | 有時客戶端會發送一些服務器無法處理的東西。瀏覽網頁時,我們都看到過臭名昭著的404 Not Found錯誤碼,這只是服務器在告訴我們,它對我們請求的資源一無所知 |
500~599 (服務器錯誤狀態碼) | 有時客戶端發送了一條有效請求,服務器自身卻出錯了,這些會返回5xx狀態碼 |
The best investment is in yourself
2020.04.27 記錄辰兮的第59篇博客