HTTP中GET與POST的區別

2022-07-09 09:51:12 字數 1165 閱讀 3525

http請求的基本方式有四種get,post,put,delete。

一般面試時會問get與post的區別:

(本標準答案參考自w3schools)

若面試官說以上答案過於格式化,有沒有自己的理解時,請繼續往下看。

get/post沒有本質上的區別。

首先,get/post時http傳送請求的兩種方式,而http是基於tcp/ip的關於資料如何在全球資訊網中如何通訊的協議。

http的底層是tcp/ip,所以get和post的底層也是tcp/ip。也就是說,get/post都是tcp鏈結。get和post能做的事情是一樣的,所以說他們本質上沒有區別。你要給get加上request body,給post帶上url引數,技術上是完全行的通的。 

那麼上面的標準答案中的區別怎麼來的呢?

http協議規定,get引數通過url傳遞,post放在request body中。法律都會有人違反,協議當然也有人不遵守,但是大部分人在全球資訊網都會遵守http協議,所以get與post的區別就出來了。

另外關於引數長度限制,業界不成文的規定是,(大多數)瀏覽器通常都會限制url長度在2k個位元組,而(大多數)伺服器最多處理64k大小的url。超過的部分,恕不處理。

所以,get和post本質上就是tcp鏈結,並無差別。但是由於http的規定和瀏覽器/伺服器的限制,導致他們在應用過程中體現出一些不同。 

另外,get和post還有乙個重大區別,簡單的說:

get產生乙個tcp資料報;post產生兩個tcp資料報。

詳細的說:

對於get方式的請求,瀏覽器會把http header和data一併傳送出去,伺服器響應200(返回資料);

而對於post,瀏覽器先傳送header,伺服器響應100 continue,瀏覽器再傳送data,伺服器響應200 ok(返回資料)。

也就是說,get只需要汽車跑一趟就把貨送到了,而post得跑兩趟,第一趟,先去和伺服器打個招呼「嗨,我等下要送一批貨來,你們開啟門迎接我」,然後再回頭把貨送過去。

1. get與post都有自己的語義,不能隨便混用。

2. 據研究,在網路環境好的情況下,發一次包的時間和發兩次包的時間差別基本可以無視。而在網路環境差的情況下,兩次包的tcp在驗證資料報完整性上,有非常大的優點。

3. 並不是所有瀏覽器都會在post中傳送兩次包,firefox就只傳送一次。

--** 

HTTP中的get與post方法相同與區別

兩種最常用的 http 方法是 get 和 post。超文字傳輸協議 http 的設計目的是保證客戶端與伺服器之間的通訊。http 的工作方式是客戶端與伺服器之間的請求 應答協議。web 瀏覽器可能是客戶端,而計算機上的網路應用程式也可能作為伺服器端。舉例 客戶端 瀏覽器 向伺服器提交 http 請...

http中get與post區別

http有兩部分組成 請求與響應,下面分別整理。在http請求中,第一行必須是乙個請求行 request line 用來說明請求型別 要訪問的 資源以及使用的http版本。緊接著是乙個首部 header 小節,用來說明伺服器要使用的附加資訊。在首部之後是乙個空行,再此之後可以新增任意的其他資料 稱之...

Http方法 Get請求與Post請求的區別

http方法 get請求與post請求的區別 get是向伺服器發索取資料的一種請求,而post是向伺服器提交資料的一種請求 get是獲取資訊,而不是修改資訊,類似資料庫查詢功能一樣,資料不會被修改 get請求的引數會跟在url後進行傳遞,請求的資料會附在url之後,以?分割url和傳輸資料,引數之間...