http協議中,get請求和post請求的區別

2021-08-06 07:10:09 字數 1818 閱讀 7521

http定義了與伺服器互動的不同方法,最基本的方法有4種,分別是get,post,put,delete。url全稱是資源描述符,我們可以這樣認為:乙個url位址,它用於描述乙個網路上的資源,而http中的get,post,put,delete就對應著對這個資源的查,

改,增,

刪4個操作。到這裡,大家應該有個大概的了解了,get一般用於

獲取/查詢

資源資訊,而post一般用於

更新資源資訊。

第一:get請求主要用於獲取、查詢資源資訊,引數都是在url中顯示,瀏覽器對get請求用長度限制,一般是1024位元組;

第二:post請求,更新資料,一般要到form(表單),比較麻煩。

上面大概說了一下http規範中get和post的一些原理性的問題。但在實際的做的時候,很多人卻沒有按照http規範去做,導致這個問題的原因有很多,比如說:

1.很多人貪方便,更新資源時用了get,因為用post必須要到form(表單),這樣會麻煩一點。

2.對資源的增,刪,改,查操作,其實都可以通過get/post完成,不需要用到put和delete。

3.另外乙個是,早期的web mvc框架設計者們並沒有有意識地將url當作抽象的資源來看待和設計,所以導致乙個比較嚴重的問題是傳統的web mvc框架基本上都只支援get和post兩種http方法,而不支援put和delete方法。

* 簡單解釋一下mvc:mvc本來是存在於desktop程式中的,m是指資料模型,v是指使用者介面,c則是控制器。使用mvc的目的是將m和v的實現**分離,從而使同乙個程式可以使用不同的表現形式。

以上3點典型地描述了老一套的風格(沒有嚴格遵守http規範),隨著架構的發展,現在出現rest(representational state transfer),一套支援http規範的新風格,這裡不多說了,可以參考《restful web services》。

說完原理性的問題,我們再從表面現像上面看看get和post的區別:

1.get請求的資料會附在url之後(就是把資料放置在http協議頭中),以?分割url和傳輸資料,引數之間以&相連,如:login.action?name=hyddd&password=idontknow&verify=%e4%bd%a0%e5%a5%bd。如果資料是英文本母/數字,原樣傳送,如果是空格,轉換為+,如果是中文/其他字元,則直接把字串用base64加密,得出如:%e4%bd%a0%e5%a5%bd,其中%xx中的xx為該符號以16進製表示的ascii。

post把提交的資料則放置在是http包的包體中。

2."get方式提交的資料最多只能是1024位元組,理論上post沒有限制,可傳較大量的資料,iis4中最大為80kb,iis5中為100kb"??!

以上這句是我從其他文章轉過來的,其實這樣說是錯誤的,不準確的:

(1).首先是"get方式提交的資料最多只能是1024位元組",因為get是通過url提交資料,那麼get可提交的資料量就跟url的長度有直接關係了。而實際上,url不存在引數上限的問題,http協議規範沒有對url長度進行限制。這個限制是特定的瀏覽器及伺服器對它的限制。ie對url長度的限制是2083位元組(2k+35)。對於其他瀏覽器,如netscape、firefox等,理論上沒有長度限制,其限制取決於作業系統的支援。

注意這是限制是整個url長度,而不僅僅是你的引數值資料長度。[見參考資料5]

(2).理論上講,post是沒有大小限制的,http協議規範也沒有進行大小限制,說「post資料量存在80k/100k的大小限制」是不準確的,post資料是沒有限制的,起限制作用的是伺服器的處理程式的處理能力。

Http協議類中post請求和get請求的區別

1 get請求會直接將資料直接附加在url之後,用?分割url和傳輸資料,用 來分割多個引數 2 get請求可以被快取,可被保留至瀏覽器歷史紀錄中,可被設定被書籤 3 get請求有長度的限制 因為url只支援ascii編碼格式,所以get請求中的所有非ascii資料都要被瀏覽器編碼後再傳輸 5 一般...

HTTP協議中,GET請求和POST請求的區別

http協議稱為超文字傳輸協議,它設計的目的是保證客戶機與伺服器之間的通訊。http的工作方式是客戶端與伺服器之間的請求 應答協議。在客戶端和伺服器之間進行請求和響應時,有兩種基本的請求方式 get和post。其中,get請求表示從指定的資源請求資料,post請求表示向指定的資源提交要被處理的資料。...

HTTP協議的常見的請求方式 GET和POST

http協議的常見的請求方式 get和post 傳輸資料的大小 安全性 http協議請求如何實現 連線方式 getsynchronization get同步請求 void getandsynchronization else post同步請求 void postandsynchronization非...