HTTP基礎概念

序言

本文主要經過HTTP 報文,講解HTTP Header,Methods,status codejavascript

HTTP

HTTP基於TCP協議實現,TCP是一條雙向通信通道,HTTP在TCP的基礎上規定了Request->Response的模式;也就是說:必須由瀏覽器首先發起請求,服務器纔會響應。css

HTTP是一個純粹的文本協議,它規定了使用TCP協議來傳輸文本格式的一個應用協議,具體能夠參考一下計算機網絡的五層協議。html

名詞解釋

Request->Response「請求->響應」

http通訊中,必須由客服端發起請求,服務端才能響應。nginx

Request 請求報文

  • method -> 請求方式「GET POST OPTIONS ...」json

  • path -> 獲取資源的路徑跨域

  • version -> 請求版本 「HTTP的協議版本號」瀏覽器

  • headers -> 頭部 「cookies...」緩存

  • body -> 請求主體 「主要提交的一些數據」

Response 響應報文

  • version -> 響應協議版本號

  • status -> 狀態碼「200 404 403... 用來反饋請求的成功失敗已經緣由」

  • headers -> 頭部跟請求頭相似 「cookies...」

  • body -> 響應的一些資源信息

幾個重點結構

HTTP Method(方法)

http method定義了咱們請求但願執行的操做類型,主要有如下幾種:

  • GET get「獲取」是一種最經常使用的請求方式,通常用來直接通URI訪問來獲取資源。譬如:獲取html代碼,圖片,JSON等資源

  • POST post「提交」也是一個更經常使用的方式,主要用來提交表單信息給後臺存儲修改驗證。譬如:提交用戶名與密碼驗證身份

  • HEAD 跟get相同,不過只返回請求頭多數由 JavaScript 發起

  • PUT && DELETE 添加跟刪除資源

  • CONNECT 用於 HTTPS和 WebSocket

  • OPTIONS && TRACE 用於預請求和調試,後面會講到

狀態碼 State code

這部分很重要,在開發調試中,每每須要根據狀態碼判斷bug出現的緣由,下面挑幾個重要的講一下:

1xx 信息響應

用處不大

2xx 成功響應

  • 200 OK 請求成功

  • 201 Created 建立成功 -> 通常是在發送PUT「添加」請求後的響應

  • 202 Accepted 請求已收到 -> 你的請求我已經收到了但我不還不想處理 ...

3xx 重定向

  • 301 Moved Premanently 資源已經永久轉移了

  • 302 Found 臨時從其餘URI 響應信息

  • 304 Not Modified 本地有緩存版本而且沒有過時

4xx 客戶端響應

這些狀態主要是客戶端發送的請求不符合服務端的規格要求,返回的狀態信息

  • 400 Bad Request 錯誤請求 -> 這個請求我不知道你在說什麼

  • 401 Unathorized 未受權 -> 這個請求你須要提交用戶驗證信息「Authorization」

  • 403 Forbidden 請求是對但拒絕執行,具體緣由不知「傲嬌臉」

  • 404 Not Found 請求的資源不存在

  • 405 Method Not Allowed 請求方式拒絕 -> 這個請求方式「如:post」不容許

5xx 服務端響應

這些狀態主要是服務端本身發生錯誤

  • 500 Internal Server Error 服務端錯誤 -> 服務端出錯具體緣由不清楚

  • 502 Bad Gateway 網關出錯

  • 503 Service Unavailable 服務器掛了

  • 504 Gateway Timeout 響應超時了

  • 505 HTTP Version Not Supported 你這個請求協議我不支持啊

HTTP Header(HTTP頭)

格式:「名稱(不區分大小寫)」: 「具體的值」 幾個常見的:

  • Accept-Encoding/Content-Encoding容許/返回的數據壓縮方式

有一次業務上線後測試工程師告訴我網頁打開太慢了,查看了network後發現打包庫好幾M,可是用本地編譯測試沒有也就幾百K而已。後來經過查詢content-encoding發現線上nginx沒有配置gzip壓縮

  • Access-Control-Allow-Methods 預請求容許返回的請求方式

當發生405錯誤的時候,能夠查詢服務器容許你請求的方式有哪些

  • Access-Control-Allow-Origin 容許誰訪問,通配符 '*'

當發生跨域的時候,通常是這個沒有設置

  • Authorization 發送驗證信息

通常在返回401的時候,就是沒有設置這個

  • Content-Type 實體頭部用於指示資源的MIME類型 media type

格式:type/subtype 「類型」/「子類型」

獨立類型:

  • text: 表示可讀文本常見

text/plain「未知可直接展現」, text/html, text/css, text/javascript, text/xml

  • image:圖像 ...

  • audio:音頻 ...

  • video:視頻 ...

  • applcation: 二進制數據 常見 application/json 表示數據是json格式的

對於text文件類型若沒有特定的subtype,就使用 text/plain。相似的,二進制文件沒有特定或已知的 subtype,即便用 application/octet-stream。

Multipart 類型:

  • Multipart 類型表示細分領域的文件類型的種類,常常對應不一樣的 MIME 類型

  • multipart/form-data: 通常用來文件直接經過HTML Forms的POST提交

咱們使用 html 的 form 標籤提交產生的 html提交的時候,默認產生application/x-www-form-urlencoded,當有文件的時候使用multipart/form-data

參考

MDN HTTP 極客時間:winter重學前端(需購買)

相關文章
相關標籤/搜索