前端必知必會HTTP請求系列(二)簡單一點的HTTP協議

圖片描述

http協議用戶客戶端和服務器之間的通訊

http協議和TCP/IP協議族內的其餘衆多協議相同,用於客戶端和服務器之間的通訊
那麼問題來個若是兩臺服務器之間一臺服務器向另外一臺服務器進行接口請求那誰是客戶端呢?因此這裏的客戶端和服務端是相對的概念,若是一端擔任客戶端的角色,另外一端就須要擔任服務器端的角色不是絕對的概念。html

經過請求和響應的交換達成通訊

http協議中已經規定了請求是從客戶端發出,最後由服務端響應這個請求並返回。
下面來看一個請求中的報文,前端

GET /index.html HTTP/1.1
Host: baidu.cn

起始行的開頭的GET表示請求訪問服務器的類型,成爲方法(method)對於先後端的同窗最熟悉不過了。
隨後的字符串index.html指明瞭請求訪問的資源對象。也叫請求的URI,最後HTTP/1.1就是咱們http的版本號,用來告訴客戶端使用的http協議功能。web

http是不保存狀態的協議

HTTP是一種不保存狀態,即無狀態協議。HTTP協議自身不對請求和響應之間的通訊狀態進行保存,也就是說HTTP這個級別。協議對於發送過的請求或者響應都不作持久化處理。segmentfault


因此在使用http協議的時候,每當有新的請求發送時,就會有對應的新的響應產生,協議自己並不保留以前一切的請求或響應報文信息。這是爲了更快的處理大量食物,確保協議的可伸縮性,而特地把http協議設計成如此簡單的。
可是隨着web的發展,由於沒有轉態在某些業務場景下由於無狀態致使業務變得棘手了,例如,如今的電商平臺,即時他在別的頁面進行瀏覽商品的時候咱們也須要保持該用戶的登陸狀態,因此爲了實現這個需求,http協議引入了Cookie技術。稍後會有詳解。後端

請求URI定位資源

HTTP協議使用URI定位互聯網上的資源,正是應爲URI的特定功能,在互聯網上任意位置的資源能訪問到。瀏覽器

告知服務器意圖的http方法

一、GET:獲取資源
get方法用來請求訪問已被URI識別的資源,指定的資源經服務器端解析後返回響應內容。若是請求的是文本。那就保持原樣返回。
二、POST:傳輸實體
POST方法用來傳輸實體的主體。
雖然用GET方法也能夠傳輸實體的主體,可是通常不用GET方法進行傳輸,而是用POST方法。雖然說POST和GET很類似。可是POST的主要目的不是獲取響應的主題內容。
三、PUT:傳輸文件
PUT方法用來傳輸文件,就像FTP協議的文件上傳同樣。要求在請求報文的主題中包含文件內容。而後保存到請求URI指定的位置去。
四、HEAD:獲取報文首部
HEAD方法和GET方法同樣,只是不返回報文主體的部分。用於確認URI的有效性及更新日期等等。
五、DELETE:刪除文件
DELET方法用來刪除文件,是與PUT相反的方法。
DELET方法安請求URI刪除指定的資源。
六、OPTIONS:詢問支持得方法
OPTIONS方法用來查詢針對URI指定的資源支持得方法。安全

持久鏈接節省通訊量

在HTTP協議的初始版本中,沒進行一次HTTP通行就要斷開一次TCP連接。
以當年的通訊狀況來講,由於都是些內容很小的文本傳輸,因此即便這樣也沒有多大問題。可隨着HTTP的普及。文檔中包含有大量的圖片的狀況多了起來。
好比瀏覽器瀏覽一個包含多張圖片的HTML頁面時,在發送請求訪問HTML頁面資源的同時,也會請求HTML頁面裏面包含的其餘資源,所以每次請求都會形成無謂的TCP鏈接創建和斷開,增長通行量的開銷。
持久鏈接
爲了解決上訴TCP鏈接的問題,HTTP/1.1和一部分的HTTP/1.0想出了持久鏈接,也稱爲HTTP keep-alive的方法。持久鏈接的特色是,只要任意一端沒有明確提出斷開鏈接,則保持TCP鏈接轉態。
HTTP/1.1中,全部的鏈接默認都是持久鏈接,可是在HTTP/1.0中並無標準化。雖然有一部分服務器經過非標準手段實現了持久化鏈接。但服務器端不必定可以支持持久化鏈接。毫無疑問,除了服務端,客戶端也須要支持持久化鏈接。
管線化
持久化鏈接使得多數請求以管線化方式發送成爲可能。從前發送請求後需等待並受到響應。才能發送下一個請求。管線化技術出現後。不用等待亦可直接發送下一個請求。
這樣就可以作到同時並行發送多個請求。而不須要一個接一個地等待響應。服務器

使用Cookie的狀態管理

以前咱們提過HTTP是無狀態協議,它不對以前發生過的請求和響應的狀態進行管理,不能否認,無狀態協議固然有它的優勢。因爲沒必要保存狀態,天然能夠減小服務器的CPU及內存資源的消耗。從另外一個側面來講,也正是由於HTTP協議自己是很是的簡單,因此纔會被應用在各類場景。 網絡

爲了解決這個問題,Cookie出現了,Cookie會根據從服務器端發送的響應報文內的一個叫作Set-Cookie的首部字段,通知客戶端保存Cookie,下次客戶端再往該服務器發送請求時,客戶端會自動在請求報文中加入Cookie以後發送出去。
服務器端發現客戶端發送過來的Cookie後,回去檢查到底是從哪個客戶端發送來的請求,而後對比服務器上的記錄,最後獲得以前的轉態信息。spa


前端必知必會HTTP請求系列(一)瞭解Web及網絡基礎
前端必知必會HTTP請求系列(二)簡單一點的HTTP協議
前端必知必會HTTP請求系列(三)HTTP,報文內部的HTTP信息 前端必知必會HTTP請求系列(四)返回結果的HTTP狀態碼 前端必知必會HTTP請求系列(五)與HTTP協做的web服務器 前端必知必會HTTP請求系列(六)HTTP的首部 前端必知必會HTTP請求系列(七)確保Web安全的HTTPS 前端必知必會HTTP請求系列(八)確認訪問用戶身份的認證 前端必知必會HTTP請求系列(九)基於HTTP的功能追加協議 前端必知必會HTTP請求系列(十)構建Web內容的技術 前端必知必會HTTP請求系列(十一)Web攻擊技術 有什麼問題能夠到評論區留言,持續關注,不斷更新!

相關文章
相關標籤/搜索