http協議中,“get”和“post”的區別是什麼?

陸仴

“我是喲喲吼說科技,專注於數據網絡的回答,歡迎大家與我交流數據網絡的問題”

HTTP(超文本傳輸協議)是互聯網上最常用的一種網絡協議,在客戶端和服務器之間建立連接後,通過發送數據至特定的端口(默認為80)來完成http請求。

如題,http協議中GET和POST的區別是什麼?

HTTP協議定義了客戶端與服務器交互的四種方式,分別為GET、POST、PUT、DELETE,喲喲針對題主所說的GET和POST做簡單介紹:

GET,用於獲取信息,僅限於去獲取並查詢數據,不會更改服務器上的數據;

POST,同GET一樣可以獲取到數據,但POST可以向服務器發送修改請求,以達到修改的目的;

兩者區別:

1、GET的參數是通過URL進行傳送;而POST是放在request body當中;

2、GET相對不安全,數據直接暴露在URL中;而POST相對安全,可以對數據進行加密;

3、GET方式會將http報頭和數據一併發送,服務器進行響應200 ok;而POST方式則是分兩部分,第一步發送報頭,服務器響應100 continue,再發送數據,服務器響應200 ok;

4、GET在URL傳輸的參數長度是有限的;而POST是沒有限制的;


喲喲吼說科技

書面上可以參考規範說明書,比在回答裡靠譜多了。

我說下大多數情況的實際應用:

get是通過URL網址來傳遞參數的,而URL是有限定長度的,比如有個幾十KB的數據需要上傳到服務器處理,無論你怎麼用get都實現不了。

post就支持較大數據的上傳,這是最明顯的區別。

那有人說了,既然post比get功能多,那就都用post,不用get唄。在大部分web場合下,都是比較簡單的請求,get比post效率高,一秒一次請求看不出來,一秒100次併發就差大了。

至於其他方面用的少,參考規範自行體會吧。


自由踐行

有人回答get方式不改變服務器數據,這是不對的,get和post都是客戶端和服務器的交互的方式之一,都可以改變服務器數據。

一般,get側重從服務器上讀取已有的數據,順便可以改寫服務器上的有關數據,如已讀次數等,post側重從本地提交上傳信息到服務器上保存,和get方式不同之處,post方式提交的數據量大,如一篇文章,get方式就只能提交個字,所有的文件,如圖片等上傳服務器只能用post方式,get也做不到。


丁月光

都沒說到點上。從HTTP報文分析,GET請求包含在HTTP頭中,而POST請求則包含在數據體中。GET數據在URL中提交,可以被搜索引擎抓到,還能被瀏覽器緩存,用於數據查詢能優化服務器性能。POST適合用來提交錄入數據。


分享到:


相關文章: