本文主要經過HTTP 報文,講解HTTP Header,Methods,status codejavascript
HTTP基於TCP協議實現,TCP是一條雙向通信通道,HTTP在TCP的基礎上規定了Request->Response的模式;也就是說:必須由瀏覽器首先發起請求,服務器纔會響應。css
HTTP是一個純粹的文本協議,它規定了使用TCP協議來傳輸文本格式的一個應用協議,具體能夠參考一下計算機網絡的五層協議。html
URL:統一資源定位符——定位到位置 如:www.baidu.com/前端
URI:統一資源標記符——定位到名字 如:www.baidu.com/index.html URI = URL (www.baidu.com/) + URN (index.html)java
http通訊中,必須由客服端發起請求,服務端才能響應。nginx
method -> 請求方式「GET POST OPTIONS ...」json
path -> 獲取資源的路徑跨域
version -> 請求版本 「HTTP的協議版本號」瀏覽器
headers -> 頭部 「cookies...」緩存
body -> 請求主體 「主要提交的一些數據」
version -> 響應協議版本號
status -> 狀態碼「200 404 403... 用來反饋請求的成功失敗已經緣由」
headers -> 頭部跟請求頭相似 「cookies...」
body -> 響應的一些資源信息
http method定義了咱們請求但願執行的操做類型,主要有如下幾種:
GET get「獲取」是一種最經常使用的請求方式,通常用來直接通URI訪問來獲取資源。譬如:獲取html代碼,圖片,JSON等資源
POST post「提交」也是一個更經常使用的方式,主要用來提交表單信息給後臺存儲修改驗證。譬如:提交用戶名與密碼驗證身份
HEAD 跟get相同,不過只返回請求頭多數由 JavaScript 發起
PUT && DELETE 添加跟刪除資源
CONNECT 用於 HTTPS和 WebSocket
OPTIONS && TRACE 用於預請求和調試,後面會講到
這部分很重要,在開發調試中,每每須要根據狀態碼判斷bug出現的緣由,下面挑幾個重要的講一下:
用處不大
200 OK 請求成功
201 Created 建立成功 -> 通常是在發送PUT「添加」請求後的響應
202 Accepted 請求已收到 -> 你的請求我已經收到了但我不還不想處理 ...
301 Moved Premanently 資源已經永久轉移了
302 Found 臨時從其餘URI 響應信息
304 Not Modified 本地有緩存版本而且沒有過時
這些狀態主要是客戶端發送的請求不符合服務端的規格要求,返回的狀態信息
400 Bad Request 錯誤請求 -> 這個請求我不知道你在說什麼
401 Unathorized 未受權 -> 這個請求你須要提交用戶驗證信息「Authorization」
403 Forbidden 請求是對但拒絕執行,具體緣由不知「傲嬌臉」
404 Not Found 請求的資源不存在
405 Method Not Allowed 請求方式拒絕 -> 這個請求方式「如:post」不容許
這些狀態主要是服務端本身發生錯誤
500 Internal Server Error 服務端錯誤 -> 服務端出錯具體緣由不清楚
502 Bad Gateway 網關出錯
503 Service Unavailable 服務器掛了
504 Gateway Timeout 響應超時了
505 HTTP Version Not Supported 你這個請求協議我不支持啊
有一次業務上線後測試工程師告訴我網頁打開太慢了,查看了network後發現打包庫好幾M,可是用本地編譯測試沒有也就幾百K而已。後來經過查詢content-encoding發現線上nginx沒有配置gzip壓縮
當發生405錯誤的時候,能夠查詢服務器容許你請求的方式有哪些
當發生跨域的時候,通常是這個沒有設置
通常在返回401的時候,就是沒有設置這個
格式:type/subtype 「類型」/「子類型」
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 類型表示細分領域的文件類型的種類,常常對應不一樣的 MIME 類型
multipart/form-data: 通常用來文件直接經過HTML Forms的POST提交
咱們使用 html 的 form 標籤提交產生的 html提交的時候,默認產生application/x-www-form-urlencoded,當有文件的時候使用multipart/form-data