報文是網絡中交換與傳輸的數據單元,即站點一次性要發送的數據塊。報文包含了將要發送的完整的數據信息,其長短很不一致,長度不限且可變。服務器
報文也是網絡傳輸的單位,傳輸過程當中會不斷的封裝成分組、包、幀來傳輸,封裝的方式就是添加一些信息段,那些就是報文頭以必定格式組織起來的數據。網絡
報文由三部分組成:起始行 首部 主體編碼
起始行:在第一行,在請求報文中說明要作些什麼,在響應報文中說出現什麼問題spa
a:請求行:對象
請求報文請求服務器對資源進行一些操做。請求報文的起始行,或稱爲請求行,包含了一個方法和一個請求URL,這個方法描述了服務器應該執行的操做,請求URL描述了要對哪一個資源執行這個方法。請求行中還包含HTTP 的版本,用來告知服務器,客戶端使用的是哪一種HTTP。全部這些字段都由空格符分隔。ci
例如:POST /infoNewsAction_uploadxheditorfile.action?immediate=1 HTTP/1.1資源
b.響應行開發
響應報文承載了狀態信息和操做產生的全部結果數據,將其返回給客戶端。響應報文的起始行,或稱爲響應行,包含了響應報文使用的HTTP 版本、數字狀態碼,以及描述操做狀態的文本形式的緣由短語。 全部這些字段都由空格符進行分隔。get
例如:HTTP/1.1 200 Oit
首部:有0或多個首部字段,每一個首部字段包含一個名字和值,通常以「:」分隔
1.每一個HTTP 首部都有一種簡單的語法:名字後面跟着冒號(:),而後跟上可選的空格,再跟上字段值,最後是一個CRLF。(或者換行符)
2. 首部延續行
將長的首部行分爲多行能夠提升可讀性,多出來的每行前面至少要有一個空格或製表符(tab)。
主體:包含了全部類型的數據,請求主體中包括了要發送給Web 服務器的數據;響應主體中裝載了要返回給客戶端的數據。主體可包含然以二進制文件。
3.通用首部
4.響應首部
5.實體首部
是用於應對實體主體部分的首部
6.內容首部
Content-Encoding |
對主體執行的任意編碼方式 |
Content-Length |
主體的長度或尺寸 |
Content-Type |
這個主體的對象類型 |
7.擴展首部
非標準的首部,由應用程序開發者建立,但還未添加到已批准的
HTTP 規範中去。即便不知道這些擴展首部的含義,HTTP 程序也要接受它們並
對其進行轉發。
基本語法格式:
請求報文的格式:
<method> <request-URL> <version>
<headers>
<entity-body>
響應報文的格式(注意,只有起始行的語法有所不一樣):
<version> <status> <reason-phrase>
<headers>
<entity-body>
100~199——信息性狀態碼
200~299——成功狀態碼
300~399——重定向狀態碼 <p65>
400~499——客戶端錯誤狀態碼
500~599——服務器錯誤狀態碼