陸仴
“我是喲喲吼說科技,專注於數據網絡的回答,歡迎大家與我交流數據網絡的問題”
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適合用來提交錄入數據。