http請求與響應報文格式
HTTP請求報文格式:
HTTP請求報文主要由請求行、請求頭部、請求正文3部分組成
1,請求行
由3部分組成,分別為:請求方法、URL(見備註1)以及協議版本,之間由空格分隔
請求方法包括GET、HEAD、PUT、POST、TRACE、OPTIONS、DELETE以及擴充套件方法,當然並不是所有的伺服器都實現了所有的方法,部分方法即便支援,處於安全性的考慮也是不可用的
協議版本的格式為:HTTP/主版本號.次版本號,常用的有HTTP/1.0和HTTP/1.1
2,請求頭部
請求頭部為請求報文添加了一些附加資訊,由“名/值”對組成,每行一對,名和值之間使用冒號分隔
常見請求頭如下:
請求頭 |
說明 |
Host |
接受請求的伺服器地址,可以是IP:埠號,也可以是域名 |
User-Agent |
傳送請求的應用程式名稱 |
Connection |
指定與連線相關的屬性,如Connection:Keep-Alive |
Accept-Charset |
通知服務端可以傳送的編碼格式 |
Accept-Encoding |
通知服務端可以傳送的資料壓縮格式 |
Accept-Language |
通知服務端可以傳送的語言 |
請求頭部的最後會有一個空行,表示請求頭部結束,接下來為請求正文,這一行非常重要,必不可少
3,請求正文
可選部分,比如GET請求就沒有請求正文
GET請求示例:
POST請求示例:
HTTP響應報文格式:
HTTP響應報文主要由狀態行、響應頭部、響應正文3部分組成
1,狀態行
由3部分組成,分別為:協議版本,狀態碼,狀態碼描述,之間由空格分隔
狀態程式碼為3位數字,200~299的狀態碼錶示成功,300~399的狀態碼指資源重定向,400~499的狀態碼指客戶端請求出錯,500~599的狀態碼指服務端出錯(HTTP/1.1向協議中引入了資訊性狀態碼,範圍為100~199)
這裡列舉幾個常見的:
狀態碼 |
說明 |
200 |
響應成功 |
400 |
客戶端請求有語法錯誤,不能被伺服器識別 |
403 |
伺服器接收到請求,但是拒絕提供服務(認證失敗) |
404 |
請求資源不存在 |
500 |
伺服器內部錯誤 |
2,響應頭部
與請求頭部類似,為響應報文添加了一些附加資訊
常見響應頭部如下:
響應頭 |
說明 |
Server |
伺服器應用程式軟體的名稱和版本 |
Content-Type |
響應正文的型別(是圖片還是二進位制字串) |
Content-Length |
響應正文長度 |
Content-Charset |
響應正文使用的編碼 |
Content-Encoding |
響應正文使用的資料壓縮格式 |
Content-Language |
響應正文使用的語言 |
響應示例:
PS:
1,URI、URL和URN之間的區別
URI全名為Uniform Resource Indentifier(統一資源標識),用來唯一的標識一個資源,是一個通用的概念,URI由兩個主要的子集URL和URN組成
URL全名為Uniform Resource Locator(統一資源定位),通過描述資源的位置來標識資源
URN全名為Uniform Resource Name(統一資源命名),通過資源的名字來標識資源,與其所處的位置無關,這樣即使資源的位置發生變動,其URN也不會變化
HTTP規範將更通用的概念URI作為其資源識別符號,但是實際上,HTTP應用程式處理的只是URI的URL子集