5分鐘快速梳理你的HTTP體系



HTTP 定義

  1. HTTP(超文本傳輸協議)  是 客戶端 與 服務端 之間信息交流的 橋樑。
  2. 在信息交流以前必需要作的就是 客戶端經過鏈接TCP/IP協議 80 端口 ,以便 服務端偵聽HTTP請求。3.HTTP 是 一種通用的 , 無狀態的應用層協議,基於標準客戶機/服務器模型。

HTTP 特色

1.採用 「請求/響應」的交互模式, 客戶端發送請求,服務端接受請求,處理請求,並將處理結果返回給客戶端。服務端不會主動發送請求。
2.協議設計靈活,拓展性好,HTTP能夠經過擴展新的請求方法實現新的功能。
3.無狀態:協議對於事務處理沒有存儲功能,意思就是若是上次響應的結果在該請求中須要用,那麼是用不了的。

缺點:
每次鏈接的數量增大。

優勢:
1.服務器處理速度快,效率高
2.避免0了集羣特色間狀態同步的開銷。

4.持久鏈接:鏈接能夠重複使用,提升了網絡鏈接使用效率。 持久鏈接 在HTTP1.1中已 經是默認選項。5.支持內容協商前端

HTTP 請求/響應交互模型

HTTP 經常使用請求方法

GET 方法

1.GET 方法 是 客戶端 向服務端 獲取資源時使用的,資源類型有圖片,音頻,HTML.....
2.服務器在處理GET請求時,它會根據客戶端發送過來的url上具體參數進行返回結果處理。
3.當用GET請求獲取數據量較大時,可能會出現傳輸過程當中斷狀況,HTTP協議提供了斷點續傳機制,經過GET 方法獲取資源時能夠指定獲取的起始點。
web

POST 方法

1.POST 方法主要是  客戶端向服務端發送數據資源。

2.POST 和 GET 方法區別:POST 請求會包含信息體,信息體中攜帶了要發送給服務端的數據。瀏覽器

HEAD 方法

    1. HEAD 方法 和 GET 方法  POST方法相似
    2. 區別在於:
      GET方法返回的請求URL標識資源內容自己
      HEAD方法僅僅返回相關響應頭信息,不返回資源內容

      3.HEAD 方法 主要用於    測試資源是否存在,是否被刪除或修改
  • PUT 方法

    PUT方法用請求有效載荷替換目標資源的全部當前表示。緩存

  • DELETE

    DELETE方法刪除指定的資源。服務器

HTTP  URI

  • URI

    1.定義 URI,通一資源標誌符(Uniform Resource Identifier, URI),表示的是web上每一種可用的資源,如 HTML文檔、圖像、視頻片斷、程序等都由一個URI進行定位的。 2.URI的結構組成:微信

    ①訪問資源的命名機制;網絡

    ②存放資源的主機名;編輯器

    ③資源自身的名稱。測試

    3.實例 https://xxx.xxx.com/details/1 ①這是一個能夠經過https協議訪問的資源,網站

    ②位於主機 xxx.xxx.com上,

    ③經過「/details/1」能夠對該資源進行惟一標識(注意,這個不必定是完整的路徑)

  • URI 構成

    • URL 統一資源定位符
    • 統一資源名稱
  • URL

    1.定義 URL是URI的一個子集。它是Uniform Resource Locator的縮寫,譯爲「統一資源定位 符」。

    2.URL的通常格式爲(帶方括號[]的爲可選項):protocol :// hostname[:port] / path / [;parameters][?query]#fragment

    3.URL的格式由三部分組成:①第一部分是協議(或稱爲服務方式)。

    ②第二部分是存有該資源的主機IP地址(有時也包括端口號)。

    ③第三部分是主機資源的具體地址,如目錄和文件名等。

    第一部分和第二部分用「://」符號隔開,

    第二部分和第三部分用「/」符號隔開。

    第一部分和第二部分是不可缺乏的,第三部分有時能夠省略。

URL 和 URI 區別

URI:統一資源標誌符(Uniform Resource Identifier) URL:統一資源定位符(uniform resource location) 說白了,URI與URL都是定位資源位置的,就是表示這個資源的位置信息,就像經緯度同樣能夠表示你在世界的哪一個角落。URI是一種寬泛的含義更廣的定義,而URL則是URI的一個子集,就是說URL是URI的一部分。換句話說,每一個URL都是URI,可是不是每一個URI都是URL的。

HTTP 發送請求

HTTP 響應請求

HTTP 狀態碼

100 Continue 繼續。客戶端應繼續其請求

101 Switching Protocols 切換協議。服務器根據客戶端的請求切換協議。只能切換到更高級的協議,例如,切換到HTTP的新版本協議

200 OK 請求成功。通常用於GET與POST請求

201 Created 已建立。成功請求並建立了新的資源

202 Accepted 已接受。已經接受請求,但未處理完成

203 Non-Authoritative Information 非受權信息。請求成功。但返回的meta信息不在原始的服務器,而是一個副本

204 No Content 無內容。服務器成功處理,但未返回內容。在未更新網頁的狀況下,可確保瀏覽器繼續顯示當前文檔

205 Reset Content 重置內容。服務器處理成功,用戶終端(例如:瀏覽器)應重置文檔視圖。可經過此返回碼清除瀏覽器的表單域

206 Partial Content 部份內容。服務器成功處理了部分GET請求

300 Multiple Choices 多種選擇。請求的資源可包括多個位置,相應可返回一個資源特徵與地址的列表用於用戶終端(例如:瀏覽器)選擇

301 Moved Permanently 永久移動。請求的資源已被永久的移動到新URI,返回信息會包括新的URI,瀏覽器會自動定向到新URI。從此任何新的請求都應使用新的URI代替

302 Found 臨時移動。與301相似。但資源只是臨時被移動。客戶端應繼續使用原有URI

303 See Other 查看其它地址。與301相似。使用GET和POST請求查看

304 Not Modified 未修改。所請求的資源未修改,服務器返回此狀態碼時,不會返回任何資源。客戶端一般會緩存訪問過的資源,經過提供一個頭信息指出客戶端但願只返回在指定日期以後修改的資源

305 Use Proxy 使用代理。所請求的資源必須經過代理訪問

306 Unused 已經被廢棄的HTTP狀態碼

307 Temporary Redirect 臨時重定向。與302相似。使用GET請求重定向

400 Bad Request 客戶端請求的語法錯誤,服務器沒法理解

401 Unauthorized 請求要求用戶的身份認證

402 Payment Required 保留,未來使用

403 Forbidden 服務器理解請求客戶端的請求,可是拒絕執行此請求

404 Not Found 服務器沒法根據客戶端的請求找到資源(網頁)。經過此代碼,網站設計人員可設置"您所請求的資源沒法找到"的個性頁面

405 Method Not Allowed 客戶端請求中的方法被禁止

406 Not Acceptable 服務器沒法根據客戶端請求的內容特性完成請求

407 Proxy Authentication Required 請求要求代理的身份認證,與401相似,但請求者應當使用代理進行受權

408 Request Time-out 服務器等待客戶端發送的請求時間過長,超時

409 Conflict 服務器完成客戶端的 PUT 請求時可能返回此代碼,服務器處理請求時發生了衝突

410 Gone 客戶端請求的資源已經不存在。410不一樣於404,若是資源之前有如今被永久刪除了可以使用410代碼,網站設計人員可經過301代碼指定資 源的新位置

411 Length Required 服務器沒法處理客戶端發送的不帶Content-Length的請求信息

412 Precondition Failed 客戶端請求信息的先決條件錯誤

413 Request Entity Too Large 因爲請求的實體過大,服務器沒法處理,所以拒絕請求。爲防止客戶端的連續請求,服務器可能會關閉鏈接。若是隻是服務器暫時沒法處理,則會包含一個Retry-After的響應信息

414 Request-URI Too Large 請求的URI過長(URI一般爲網址),服務器沒法處理

415 Unsupported Media Type 服務器沒法處理請求附帶的媒體格式

416 Requested range not satisfiable 客戶端請求的範圍無效

417 Expectation Failed 服務器沒法知足Expect的請求頭信息

422 Conflict 代表因爲所提供的的做爲請求部分的數據非法,建立或修改操做不能被完成

429 TooManyRequests 代表超出了客戶端訪問頻率的限制或者服務端接收到多於它能處理的請求。建議客戶端讀取相應的Retry-After 首部,而後等待該首部指出的時間後重試。

500 Internal Server Error 服務器內部錯誤,沒法完成請求

501 Not Implemented 服務器不支持請求的功能,沒法完成請求

502 Bad Gateway 做爲網關或者代理工做的服務器嘗試執行請求時,從遠程服務器接收到了一個無效的響應

503 Service Unavailable 因爲超載或系統維護,服務器暫時的沒法處理客戶端的請求。延時的長度可包含在服務器的Retry-After頭信息中

504 Gateway Time-out 充當網關或代理的服務器,未及時從遠端服務器獲取請求

505 HTTP Version not supported 服務器不支持請求的HTTP協議的版本

HTTP 狀態碼分類

1** ------------------------------------> 信息,服務器收到請求,須要請求者繼續執行

2** ------------------------------------> 成功,操做被成功接收並處理

3** ------------------------------------>  重定向,須要進一步的操做以完成請求

4** ------------------------------------>  客戶端錯誤,請求包含語法錯誤或沒法完成請求

5** ------------------------------------>  服務器錯誤,服務器在處理請求的過程當中發生了錯誤

彩蛋環節


本文分享自微信公衆號 - 前端自學社區(gh_ce69e7dba7b5)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。