是stateless協議,自身不對請求和響應之間的通訊狀態進行保存。但隨着技術發展,爲了實現保存狀態的功能,引入了Cookie技術。html
Cookie在請求和響應報文中寫入信息來控制客戶端的狀態。數據庫
GET,POST緩存
HEAD:得到報文首部,不返回主體部分。用於確認URL的有效性和資源更新的日期時間等。安全
PUT, DELETE: 不帶驗證機制,只當配合Web應用的驗證機制或遵照REST標準時使用。服務器
OPTIONS: 詢問支持的方法網絡
CONNECT:要求用隧道協議鏈接代理。less
不會每次HTTP通訊後都斷開,這樣減小重複創建鏈接和斷開的負擔。編碼
管線化:在鏈接的時候,發送請求,和響應請求分開了。能夠並行發送多個請求,無需一個接一個等待響應。加密
以前的博客(有圖)https://www.cnblogs.com/chentianwei/p/9485301.htmlspa
分爲:通用的首部,請求首部,響應首部,實體首部4種。常見的見以前的博客的表格。
HTTP協議發送的報文主體內可含有多類型實體,一般是在圖片或文本文件上傳時使用:
multipart/form-data: 表單上傳
multipart/byteranges:狀態碼206響應報文包含了多個範圍的內容時使用
使用Content-Type,並加上boundary=XXX
集合對象中的每一個對象使用--XXX進行區分,最後的結尾用--XXX--標誌來表明結束。
超大的圖片下載過程,一旦中斷,無需重新下載,由於它使用了Range Request。相似把大圖切割成幾部分,就像包同樣。
Content-Range: bytes 5001-10000/10000
60多種,經常使用14種。
200: ok
204: No Content, 請求處理成功了,但返回的response message中沒有主體部分。
206: Partial Content, 表示客戶端進行了Range request,服務器成功執行了這部分GET請求。響應報文中包含了Content-Range指定的實體內容。
301: Move Permanently, 表示請求的資源已經被分配了新的URL, 之後應使用資源如今所指向的URL.
302:Found, 表示臨時重定向,表示請求的資源被分配了新的URL,但願本次使用這個URL訪問。
303: See Other,表示請求對應的資源存在另外一個URL,應該使用GET方法定向獲取請求的資源。其餘和302相似。
304: Not Modified, 表示客戶端發送帶條件的請求,服務器容許請求訪問資源,但未知足條件的狀況。304返回時,不帶響應的主體部分。
⚠️(if-Match, If-Modified-Since,If-None-Match, If-Range, If-Unmodified-Since)首部
307: Temporary Redirect等同302,業界習慣POST變成GET。
400: Bad Request, 表示請求報文中有語法錯誤❌。
401 Unauthorized, 表示須要經過HTTP認證
403 Forbidden,服務器對請求資源的訪問拒絕。實體的主體部分看對緣由的描述。
404 Not Found, 服務器上沒法找到請求的資源,除此以外也能夠在服務器端拒絕請求而且不想說明理由時使用。
500 Internal Server Error ,表示服務器在執行請求時出現❌,bug,臨時故障。
503 Service Unavailable, 表示服務器暫時不可用,超載,停機維護。
⚠️ 狀態碼有可能和真實情況不一致。
讓一臺服務器託管了N多個域名。 Web託管服務的供應商就是這麼作的。
所以,發送HTTP請求,必須使用完整的主機名或域名URL
代理:使用代理服務器能夠減小網絡帶寬的流量(利用緩存技術)
緩存代理proxy:在代理服務器上儲存從源服務器上發過來的response message。
緩存有效期。客戶端也能夠緩存。
網關:和代理相似,但能夠提供非HTTP協議服務。提升了安全性,如:鏈接數據庫,鏈接信用卡結算系統
隧道: 使用SSL等加密手段進行通訊。確保安全通訊。
4種類型:
General Header Fields,
Request Header Fields, 補充了請求的附加內容, 客戶端信息, 響應內容相關優先級等信息。
Response Header Fields, 補充了響應的附加內容,也會要求客戶端附加額外的內容信息。
Entity Header Fields, 報文實體部分使用的首部,補充了資源內容更新時間等和實體有關的message.
博客相關知識:https://www.cnblogs.com/chentianwei/p/9374341.html
public/private: 是否其餘用戶也能夠利用緩存。
no-cache:實際意思是不緩存過時的資源
若是是響應指令,表明緩存前必須先確認其有效性。若是是請求指令,表明向源服務器取資源不要緩存。
目的:防止從緩存中返回過時的資源。
no-store: 不儲存緩存資源,真正的不緩存。
max-age: 表明資源保存爲緩存的最長時間。max-age比Expires優先級高。
max-stale: 最大過時時間。即便超過max-age,但沒超過max-stale 緩存仍然會被客戶端接收。
規定使用分快傳輸的編碼方式。
用於追蹤傳輸路徑,報文通過代理和網關時會在via中附加該服務器的信息。
告知用戶一些和緩存相關的問題的警告。
Warning: [警告碼][主機: 端口號]"[警告內容]"([日期時間])
6.41 accept
若是是星號*,If-Match:*, 則忽略ETag值。只要資源存在就處理。
If-Match和If-None-Match做用相反。
6.51 accept-ranges
工做機制: 用戶識別,狀態管理。
Set-Cookie: 響應首部字段
Cookie: 請求首部字段
屬性: