HTTP 報文是 HTTP 應用程序之間傳遞的格式化數據塊,分爲請求報文和響應報文兩類,二者的基本結構相同。緩存
HTTP 報文由起始行、首部、主體(可選)三個部分組成。其中,起始行和首部均以一個行終止序列(即空行,可寫做CRLF,包括一個回車符、一個換行符)做爲結束符。主體是可選的數據塊,能夠包含文本、二進制數據或者爲空。安全
起始行服務器
全部 HTTP 報文都已起始行做爲開始,請求報文和響應報文的起始行的語法有所不一樣。google
請求報文起始行:代理
又稱爲請求行,告訴服務器要作什麼。code
語法:視頻
<method><request-URL><version> 如:GET www.google.com HTTP/1.0圖片
方法(method):經常使用的有資源
① GET:從服務器上獲取資源文檔
② POST:向服務器發送須要處理(更新)的數據
③ PUT:將請求主體存儲於(寫入)服務器上的指定路徑(請求的 URL)
④ DELETE:請求服務器刪除資源,但沒法保證被執行,由於服務器能夠在不通知客戶端的狀況下撤銷請求
⑤ HEAD:從服務器獲取資源首部,必須確保與 GET 請求返回的首部徹底相同
⑥ OPTIONS:肯定服務器能夠執行的方法;使客戶端不一樣實際訪問資源就能判斷訪問資源的最優方法。
⑦ TRACE:對可能通過代理服務器的報文進行跟蹤
其中 GET 和 HEAD 方法被認爲是安全的,由於這兩種請求不會在服務器上產生什麼結果。
響應報文起始行:
又稱爲響應行,告訴客戶端發生了什麼。
語法:
<version><status><reason-phrase> 如:HTTP/1.0 200 OK
狀態碼(status-code):數字狀態碼,便於程序進行差錯處理;每一個狀態碼第一位數字都用於描述狀態的通常類型。其中
100-199:表示信息提示,100-101 已被定義
100 Continue 表示服務器收到了請求的初始部分,請客戶端繼續。通常當客戶端須要發送一個大實體或判斷服務器可否處理實體時,能夠在首部添加 Expect: 100 Continue。若是客戶端不須要發送實體,就不該該發送該首部字段。
200-299:表示成功,200-206 已被定義
200 OK 請求成功,主題包含所請求的資源。
300-399:表示資源被移走,300-30五、307 已被定義
301 Moved Permanently 永久重定向;
302 Found 臨時重定向(HTTP/1.0);
303 See Other 臨時重定向(HTTP/1.1);
304 Not Modified 所請求資源未被修改,使用緩存資源;
307 Temporary Rederect 與 301 相似(HTTP/1.1);
400-499:表示客戶端請求出錯,400-415 已被定義
401 Unauthorized 客戶端在獲取資源的訪問權以前,對本身進行認證;
403 Forbidden 請求被服務器拒絕,一般在服務器不想說明拒絕緣由時使用;
404 Not Found 請求的資源不存在;
405 Method Not Allowed 請求中帶有所請求 URL 不支持的方法;
406 Not Acceptable 服務器不存在客戶端可接受的與請求 URL 匹配的資源;
500-599:表示服務器出錯,500-505 已被定義
500 Internal Server Error 服務器發生錯誤;
501 Not Implemented 請求超出服務器的能力範圍(如使用服務器不支持的請求方法);
503 Service Unavalable 服務器暫時沒法爲請求提供服務,但未來能夠;
504 Gateway Timeout 響應超時,來自網關或代理;
505 HTTP Version Not Supproted 請求使用了服務器沒法或不肯支持的協議版本;
緣由短語(reason-phrase):以文本形式描述操做狀態;便於人們理解,所以只對人類有意義(通常程序只檢查狀態碼)
首部
爲報文添加一些附件信息;本質上是一些名/值對列表。首部分爲:
通用首部:
緩存首部:Cache-Control、Pragma
請求首部:
Accept首部:Accept、Accept-Charset、Accept-Encoding、Accept-Language、TR
條件首部:Expect、If-Match、If-Modified-Since、If-Unmodified-Since、If-Match、If-None-Match
安全首部:Authorization、Cookie、Cookie2
代理首部:Max-forward、Proxy-Authorization、Proxy-Connection
響應首部:
信息性首部:Age、public...
安全首部:Proxy-Authenticate、Set-Cookie、Set-Cookie2
實體首部:
信息性首部:Allow、Location
內容首部:Content-Type、Content-length、Content-Language
緩存首部:ETag、Expires、Last-Modified
擴展首部。
主體
HTTP 要傳輸的內容,能夠爲圖片、視頻、HTML 文檔、軟件應用程序等。
參考:HTTP 權威指南