HTTP系列之請求

風起HTTP

通過面試了大量開發人員,發現很多在http協議方面很薄弱,問到關於http請求瞭解有哪些,大多數也只是知道get、post,今天熊貓猿就着重講下http請求。

HTTP

超文本傳輸協議(HTTP, HyperText Transfer Protocol)是一種無狀態的協議,簡單的請求-響應協議,它通常運行在TCP之上。它指定了客戶端可能發送給服務器什麼樣的消息以及得到什麼樣的響應。請求和響應消息的頭以ASCII碼形式給出;而消息內容則具有一個類似MIME的格式。它位於OSI七層模型的應用層。HTTP客戶端會根據需要構建合適的HTTP請求方法,而HTTP服務器會根據不同的HTTP請求方法做出不同的響應。

HTTP是基於客戶/服務器模式,且面向連接的。典型的HTTP事務處理有如下的過程:
(1)客戶與服務器建立連接;
(2)客戶向服務器提出請求;
(3)服務器接受請求,並根據請求返回相應的文件作爲應答;
(4)客戶與服務器關閉連接。


HTTP版本與HTTP請求方法

在HTTP的有很多版本,其中的大部分協議都是向下兼容的。在進行HTTP請求時,客戶端在請求時會告訴服務器它採用的協議版本號,而服務器則會在使用相同或者更早的協議版本進行響應。

HTTP/0.9

0.9協議是適用於各種數據信息的簡潔快速協議,但是遠不能滿足日益發展的各種應用的需要。0.9協議就是一個交換信息的無序協議,僅僅限於文字。由於無法進行內容的協商,在雙發的握手和協議中,並有規定雙發的內容是什麼,也就是圖片是無法顯示和處理的。在這個版本中只有GET一種請求方法,在HTTP通訊也沒有指定版本號,也不支持請求頭信息。該版本不支持POST等方法,因此客戶端向服務器傳遞信息的能力非常有限。HTTP/0.9的請求只有如下一行:

GET https://blog.csdn.net


HTTP/1.0


到了1.0協議階段,也就是在1982年,TimBerners-Lee提出了HTTP/1.0。在此後的不斷豐富和發展中,HTTP/1.0成爲最重要的面向事務的應用層協議。該協議對每一次請求/響應建立並拆除一次連接。HTTP/1.0支持:GET、POST、HEAD三種HTTP請求方法。

HTTP/1.1

HTTP/1.1是普遍使用的版本。該版本默認採用持久連接,可配合代理服務器工作。還支持以管道方式同時發送多個請求,以便降低線路負載,提高傳輸速度。HTTP/1.1新增了:OPTIONS、PUT、DELETE、TRACE、CONNECT五種HTTP請求方法。
http/1.1

HTTP/2

HTTP/2通過支持請求與相應的多路重用來減少延遲,通過壓縮HTTP頭字段將協議開銷降到最低,同時增加了對請求優先級和服務器端推送的支持。

HTTP請求方法介紹&SpringMVC註解

HTTP/1.1協議中共定義了8種HTTP請求方法,HTTP請求方法也被叫做“請求動作”,不同的方法規定了不同的操作指定的資源方式。服務端也會根據不同的請求方法做不同的響應。

GET—@GetMapping

顯示請求指定的資源。一般來說GET方法應該只用於數據的讀取,而不應當用於會產生副作用的非冪等的操作中。

POST—@PostMapping

向指定資源提交數據,請求服務器進行處理,如:表單數據提交、文件上傳等,請求數據會被包含在請求體中。

PUT—@PutMapping

會向指定資源位置上傳其最新內容,PUT方法是冪等的方法。通過該方法客戶端可以將指定資源的最新數據傳送給服務器取代指定的資源的內容。

DELETE—@DeleteMapping

用於請求服務器刪除所請求URI(統一資源標識符,Uniform Resource Identifier)所標識的資源。DELETE請求後指定資源會被刪除。

HEAD

HEAD方法與GET方法一樣,都是向服務器發出指定資源的請求。但是,服務器在響應HEAD請求時不會回傳資源的內容部分,即:響應主體。這樣,我們可以不傳輸全部內容的情況下,就可以獲取服務器的響應頭信息。HEAD方法常被用於客戶端查看服務器的性能。

CONNECT

是HTTP/1.1協議預留的,能夠將連接改爲管道方式的代理服務器。通常用於SSL加密服務器的鏈接與非加密的HTTP代理服務器的通信。

OPTIONS

OPTIONS請求與HEAD類似,一般也是用於客戶端查看服務器的性能。
這個方法會請求服務器返回該資源所支持的所有HTTP請求方法,該方法會用’*'來代替資源名稱,向服務器發送OPTIONS請求,可以測試服務器功能是否正常。JavaScript的XMLHttpRequest對象進行CORS跨域資源共享時,就是使用OPTIONS方法發送嗅探請求,以判斷是否有對指定資源的訪問權限。
在這裏插入圖片描述

TRACE

TRACE請求服務器回顯其收到的請求信息,該方法主要用於HTTP請求的測試或診斷。

HTTP/1.1之後增加的方法

PATCH—@PatchMapping

但PATCH一般用於資源的部分更新,而PUT一般用於資源的整體更新。
當資源不存在時,PATCH會創建一個新的資源,而PUT只會對已在資源進行更新。

GET&POST

  GET POST
後退按鈕/刷新 無害 數據會被重新提交(瀏覽器應該告知用戶數據會被重新提交)。
緩存 能被緩存 不能緩存
編碼類型 application/x-www-form-urlencoded application/x-www-form-urlencoded 或 multipart/form-data。爲二進制數據使用多重編碼。
歷史 參數保留在瀏覽器歷史中。 參數不會保存在瀏覽器歷史中。
對數據長度的限制 是的。當發送數據時,GET 方法向 URL 添加數據;URL 的長度是受限制的(URL 的最大長度是 2048 個字符)。 無限制。
對數據類型的限制 只允許 ASCII 字符。 沒有限制。也允許二進制數據。
安全性 安全性較差,因爲所發送的數據是 URL 的一部分。 在發送密碼或其他敏感信息時絕不要使用 GET ! 更安全,因爲參數不會被保存在瀏覽器歷史或 web 服務器日誌中。
可見性 數據在URL中可見的。 數據不會顯示在 URL 中。
發佈了18 篇原創文章 · 獲贊 21 · 訪問量 16萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章