HTTP初步了解
阿新 • • 發佈:2019-03-28
應該 版本 response 一次 def req ace 上傳文件 表示
HTTP協議簡介
HTTP(超文本傳輸協議)是應用層上的一種客戶端/服務端模型的通信協議,它由請求和響應構成,且是無狀態的。(暫不介紹HTTP2)
- 協議
協議規定了通信雙方必須遵循的數據傳輸格式,這樣通信雙方按照約定的格式才能準確的通信。
- 無狀態
無狀態是指兩次連接通信之間是沒有任何關系的,每次都是一個新的連接,服務端不會記錄前後的請求信息。
- 客戶端/服務端模型
五層網絡模型
URL構成
用了這麽久,你註意過嗎?
協議內容
請求(Request)
客戶端發送一個HTTP請求到服務端的格式:
- 請求行
- 請求頭
- 請求體
響應(Response)
服務端響應客戶端格式:
- 狀態行
- 響應頭
- 響應體
狀態碼
HTTP狀態碼由三個十進制數字組成,第一個十進制數字定義了狀態碼的類型,後兩個數字沒有分類的作用。HTTP狀態碼共分為5種類型:
分類 | 分類描述 |
---|---|
1** | 信息,服務器收到請求,需要請求者繼續執行操作 |
2** | 成功,操作被成功接收並處理 |
3** | 重定向,需要進一步的操作以完成請求 |
4** | 客戶端錯誤,請求包含語法錯誤或無法完成請求 |
5** | 服務器錯誤,服務器在處理請求的過程中發生了錯誤 |
更詳細的狀態碼可查看 HTTP狀態碼
但一般我們只需要知道幾個常見的就行,比如 200,400,401,403,404,500,502.
請求方法
截止到HTTP1.1共有下面幾種方法:
方法 | 描述 |
---|---|
GET | GET請求會顯示請求指定的資源。一般來說GET方法應該只用於數據的讀取,而不應當用於會產生副作用的非冪等的操作中。它期望的應該是而且應該是安全的和冪等的。這裏的安全指的是,請求不會影響到資源的狀態。 |
POST | 向指定資源提交數據進行處理請求(例如提交表單或者上傳文件)。數據被包含在請求體中。POST請求可能會導致新的資源的建立和/或已有資源的修改。 |
PUT | PUT請求會身向指定資源位置上傳其最新內容,PUT方法是冪等的方法。通過該方法客戶端可以將指定資源的最新數據傳送給服務器取代指定的資源的內容。 |
PATCH | PATCH方法出現的較晚,它在2010年的RFC 5789標準中被定義。PATCH請求與PUT請求類似,同樣用於資源的更新。二者有以下兩點不同:1.PATCH一般用於資源的部分更新,而PUT一般用於資源的整體更新。2.當資源不存在時,PATCH會創建一個新的資源,而PUT只會對已在資源進行更新。 |
DELETE | DELETE請求用於請求服務器刪除所請求URI(統一資源標識符,Uniform Resource Identifier)所標識的資源。DELETE請求後指定資源會被刪除,DELETE方法也是冪等的。 |
OPTIONS | 允許客戶端查看服務器的性能。 |
CONNECT | HTTP/1.1協議中預留給能夠將連接改為管道方式的代理服務器。 |
HEAD | 類似於get請求,只不過返回的響應中沒有具體的內容,用於獲取報頭 |
TRACE | 回顯服務器收到的請求,主要用於測試或診斷。 |
請求和響應常見通用頭
名稱 | 作用 |
---|---|
Content-Type | 請求體/響應體的類型,如:text/plain、application/json |
Accept | 說明接收的類型,可以多個值,用, (半角逗號)分開 |
Content-Length | 請求體/響應體的長度,單位字節 |
Content-Encoding | 請求體/響應體的編碼格式,如gzip,deflate |
Accept-Encoding | 告知對方我方接受的Content-Encoding |
ETag | 給當前資源的標識,和Last-Modified 、If-None-Match 、If-Modified-Since 配合,用於緩存控制 |
Cache-Control | 取值為一般為no-cache 或max-age=XX ,XX為個整數,表示該資源緩存有效期(秒) |
註意
Content-Type,內容類型,一般是指網頁中存在的Content-Type,用於定義網絡文件的類型和網頁的編碼,決定瀏覽器將以什麽形式、什麽編碼讀取這個文件。
常見的媒體格式類型如下:
Content-Type(Mime-Type) | 描述 |
---|---|
text/html | HTML格式 |
text/plain | 純文本格式 |
text/xml | XML格式 |
image/gif | gif圖片格式 |
image/jpeg | jpg圖片格式 |
image/png | png圖片格式 |
以application開頭的媒體格式類型:
Content-Type(Mime-Type) | 描述 |
---|---|
application/xml | XML數據格式 |
application/json | JSON數據格式 |
application/pdf | pdf格式 |
application/msword | Word文檔格式 |
application/octet-stream | 二進制流數據(如常見的文件下載) |
application/x-www-form-urlencoded | form表單數據被編碼為key/value格式發送到服務器(表單默認的提交數據的格式) |
multipart/form-data | 需要在表單中進行文件上傳時,就需要使用該格式 |
常見請求頭
名稱 | 作用 |
---|---|
Authorization | 用於設置身份認證信息 |
User-Agent | 用戶標識,如:OS和瀏覽器的類型和版本 |
If-Modified-Since | 值為上一次服務器返回的 Last-Modified 值,用於確認某個資源是否被更改過,沒有更改過(304)就從緩存中讀取 |
If-None-Match | 值為上一次服務器返回的 ETag 值,一般會和If-Modified-Since 一起出現 |
Cookie | 已有的Cookie |
Referer | 表示請求引用自哪個地址,比如你從頁面A跳轉到頁面B時,值為頁面A的地址 |
Host | 請求的主機和端口號 |
常見響應頭
名稱 | 作用 |
---|---|
Date | 服務器的日期 |
Last-Modified | 該資源最後被修改時間 |
Transfer-Encoding | 取值為一般為chunked,出現在Content-Length不能確定的情況下,表示服務器不知道響應版體的數據大小,一般同時還會出現Content-Encoding 響應頭 |
Set-Cookie | 設置Cookie |
Location | 重定向到另一個URL,如輸入瀏覽器就輸入baidu.com回車,會自動跳到 https://www.baidu.com ,就是通過這個響應頭控制的 |
Server | 後臺服務器 |
HTTP初步了解