都得懂點http

前言

最近在看nodejs,發現須要不少http相關的知識,就去找了本「圖解HTTP」看,
記錄下本身以爲比較重要的知識點html

URI格式

http:// user:passwd @www.cheesekun.top :80 /dir/index.html ?uid=1 #ch1
協議方案名 登陸信息 服務器地址 服務器端口 文件路徑 查詢字符串 片斷標識符

http首部字段

因爲字段類別不少,只挑選了一些打開網頁常見的字段
node

General(通用首部字段)

請求報文和相應報文都會使用的首部web

首部字段名 說明 某參數 做用
Connection 逐跳首部,鏈接的管理 keep-alive 客戶端與服務器進行持久鏈接,可用參數close斷開

Request(請求首部字段)

從客戶端向服務器端發送請求報文時使用的首部。補充了請求的附加內容,客戶端信息,響應內容相關優先級等信息瀏覽器

首部字段名 說明 參數 做用
Accept 用戶代理可處理相對優先級的媒體類型 text/html,application/xhtml+xml,image/webp,/;q=0.8 優先採用text和html格式,q爲優先權重值
Accept-Encoding 優先的內容編碼 gzip,deflate,sdch 支持gzip等內容編碼及其優先級
Accept-Language 優先的語言(天然語言) zh-CN,zh;q=0.8,en-us,en; 優先中文
Content-Length 實體主題的大小(單位:字節)
Host 請求資源所在的服務器
Referer 對請求中URI的原始獲取方 https://www.google.com 該頁面是在google連接而來
User-Agent HTTP客戶端程序的信息
X-Request-With 客戶端的請求是Ajax請求仍是其餘請求

Response(響應首部字段)

從服務器端向客戶端返回響應報文時使用的首部。補充了響應的附加內容,也會要求客戶端附加額外的內容信息緩存

首部字段名 說明 某參數 做用
Accept-Ranges 是否接受字節範圍請求
Content-Type 實現主體的媒體類型
Date 建立報文的日期時間
ETag 資源的匹配信息 "一串字符" 標識全部資源
Expires 實體主體過時的日期時間 一個日期 緩存超過該日期會從源服務器獲取資源
Location 轉移URI指向 一個URI 配合3xx,重定向提示轉移URI路徑
Last-Modified 資源的最後修改日期時間
Pragma 報文指令 no-cache 兼容http1.0,http1.1使用Cache-Conrol:no-cache,表示不接收緩存
Transfer-Encoding 指定報文主體的傳輸編碼方式 chunked(分塊) 分塊傳輸編碼
Vary 代理服務器緩存的管理 Accept-Language 從代理服務器拿取A-L的緩存,若無,則從源服務器拿

Enitity(實體首部字段)

針對請求報文和響應報文的實體部分使用的首部。補充了資源內容更新時間等與實體有關的信息服務器

HTTP狀態碼

狀態碼告知從服務器端返回的請求結果app

狀態碼 類別 緣由短語
1XX Informational(信息性狀態碼) 接收的請求正在處理
2XX Success(成功狀態碼) 請求正常處理完畢
3XX Redirection(重定向狀態碼) 須要進行附加操做以完成請求
4XX Client Error(客戶端錯誤狀態碼) 服務器沒法處理請求
5XX Server Error(服務器錯誤狀態碼) 服務器處理請求出錯

2XX 成功

  • 200 OK:表示客戶端的請求被服務器成功處理ui

  • 204 No Content:該狀態碼錶明服務器接收的請求已成功處理,但在返回的響應報文中不含實體的主體部分。另外,也不容許返回任何實體的主體。好比,當從瀏覽器發出請求處理後,返回 204 響應,那麼瀏覽器顯示的頁面不發生更新。google

  • 206 Partial Content:該狀態碼錶示客戶端進行了範圍請求,而服務器成功執行了這部分的GET請求。響應報文中包含由Content-Range 指定範圍的實體內容。編碼

3XX 重定向

3XX 響應結果代表瀏覽器須要執行某些特殊的處理以正確處理請求。

  • 301 Moved Permanently:永久性重定向。該狀態碼錶示請求的資源已被分配了新的 URI,之後應使用資源如今所指的 URI。也就是說,若是已經把資源對應的 URI保存爲書籤了,這時應該按 Location 首部字段提示的 URI 從新保存。

  • 302 Found:臨時性重定向:該狀態碼錶示請求的資源已被分配了新的URI,但願用戶本次請求能使用新的URI。302和301很類似,302表示的URI並非永久性移動,換句話說就是URI還有可能發生變化。

  • 303 See Other:該狀態碼錶示因爲請求對應的資源存在着另外一個 URI,應使用 GET方法定向獲取請求的資源。303和302有着類似的功能,他們之間的區別是303狀態碼錶示明確客戶端採用GET請求獲取資源

  • 304 Not Modified:該狀態碼錶示客戶端發送附帶條件的請求時,服務器端容許請求訪問資源,但未知足條件的狀況。304狀態碼返回時,不包含任何響應的主題部分。跟重定向沒有關係。

4XX客戶端錯誤

4XX響應結果表示錯誤發生在客戶端

  • 400 Bad Request:該狀態碼錶示請求報文中存在語法錯誤。當錯誤發生時,需修改請求的內容後再次發送請求。另外,瀏覽器會像 200 OK 同樣對待該狀態碼。

  • 401 Unauthorized:該狀態碼錶示發送的請求須要有經過 HTTP 認證(BASIC 認證、DIGEST 認證)的認證信息。

  • 403 Forbidden:該狀態碼代表對請求資源的訪問被服務器拒絕了。

  • 404 Not Found:該狀態碼代表服務器上沒法找到請求的資源。

5XX服務器錯誤

5XX 的響應結果代表服務器自己發生錯誤。

  • 500 Internal Server Error:該狀態碼代表服務器端在執行請求時發生了錯誤。

  • 503 Service Unavailable:該狀態碼代表服務器暫時處於超負載或正在進行停機維護,如今沒法處理請求。

結語

挺好的一本書,172張圖片也特別幫助理解。
原文:cheesekun.top

相關文章
相關標籤/搜索