一。HTTP報文的組成瀏覽器
請求報文由 請求行、請求頭、請求空行、請求實體四部分組成。其中,請求行和請求頭共同組成 請求報文頭部緩存
請求行:一行,依次由 請求方法、URI(或者應該說是域名?)、HTTP協議版本 三部分組成安全
請求頭:由 通用首部字段、請求首部字段、實體首部字段 三部分組成服務器
空行加密
請求實體(請求報文實體)spa
響應報文由 響應行、響應頭、響應空行、響應實體四部分組成。其中,響應行和響應頭共同組成響應報文頭部代理
響應行:一行,依次由 HTTP協議版本、狀態碼、狀態碼簡介 三部分組成orm
響應頭:由 通用首部字段、響應首部字段、實體首部字段 三部分組成資源
空行域名
響應實體(響應報文實體)
二。請求方法
HTTP1.1總共有8種請求方法
都是針對請求URI作出的動做
1.GET 請求資源
2.POST 提交數據,傳輸實體主體
3.PUT 傳輸文件
4.HEAD 獲取報文首部
5.DELETE 刪除文件
6.OPTION 詢問支持的方法
7.TRACE 追蹤路徑,Max-Forwards首部字段中填入數值,每通過一個服務器則減1,數值變爲0時中止傳輸,最後收到請求的服務器返回200 OK
8.CONNECT 與代理服務器間創建隧道(使用SSL(Secure Socket Layer,安全套接層)和TLS(Transport Layer Secure,傳輸層安全)加密的通訊通道)
GET 和 POST的比較:
(1)是否可保存爲書籤:GET能被保存爲書籤;POST不能
(2)是否能夠緩存:GET能被緩存;POST不能
(3)參數是否能保存爲瀏覽器歷史:GET中的參數能保存在瀏覽器歷史裏;POST的參數不能
(4)數據類型限制:GET只容許ASCII碼字符;POST無數據類型限制,能夠爲二進制數據,由於POST的數據做爲一個總體放在請求報文實體裏
(5)數據是否可見:GET的數據可見,由於用 ? 和 & 拼接在URL中;POST的數據不可見
(6)數據是否安全:GET中的數據不安全;POST比GET更安全
(7)數據的長度限制:GET有長度限制,URL最長2048個字符;POST數據內容無長度限制
(8)後退/刷新是否有害:GET無害;POST會重複提交數據
三。狀態碼
總共有5種不一樣類別的狀態碼。總結以下
狀態碼 | 類別 | 含義 |
---|---|---|
1XX | Informational(信息性狀態碼) | 接收的請求正在處理 |
2XX | Success(成功狀態碼) | 請求正常處理完畢 |
3XX | Redirection(重定向狀態碼) | 須要進行附加操做以完成請求 |
4XX | Client Error(客戶端錯誤狀態碼) | 服務器沒法處理請求 |
5XX | Server Error(服務器錯誤狀態碼) | 服務器處理請求出錯 |
常見的狀態碼有:
100:Continue 一切正常 ,客戶端能夠繼續發送請求
200:OK
204:Not Content 請求正常處理,但返回的響應報文中不含實體的主體部分(無資源返回)
206:Partial Content 表示客戶端進行了範圍請求,服務器成功執行。響應報文中包含由 Content-Range 指定範圍的實體內容
301:Moved Permanently 永久重定向
302:Found 臨時性重定向。表示請求的資源已分配新的URI,但願用戶本次使用新URI訪問
303:See Other 和 302 有着相同的功能,可是 303 明確要求客戶端應該採用 GET 方法獲取資源
304:Not Modified 請求報文首部包含條件(如:If-Match),不知足條件是返回 304
307:Temporary Redirect 臨時性重定向。POST方法不會變爲GET方法
注:雖然 HTTP 協議規定 30一、302 狀態下重定向時不容許把 POST 方法改爲 GET 方法,可是大多數瀏覽器都會在 30一、302 和 303 狀態下的重定向把 POST 方法改爲 GET 方法。
400:Bad Request 錯誤請求(請求報文中存在語法錯誤)
401:Unauthorized 請求須要HTTP認證信息
403:Forbidden 該資源拒絕訪問
404:Not Found 沒法找到請求的資源
500:Internal Server Error 服務器發生錯誤
503:Service Unavailable 服務器繁忙(超負載或正在停機維護)