Get和Post都是向服務器發送的一種請求,只是發送機制不一樣。
數據庫
1. GET請求會將參數跟在URL後進行傳遞,而POST請求則是做爲HTTP消息的實體內容發送給WEB服務器。固然在Ajax請求中,這種區別對用戶是不可見的。瀏覽器
2. 首先是"GET方式提交的數據最多隻能是1024字節",由於GET是經過URL提交數據,那麼GET可提交的數據量就跟URL的長度有直接關係了。而實際上,URL不存在參數上限的問題,HTTP協議規範沒有對URL長度進行限制。這個限制是特定的瀏覽器及服務器對它的限制。IE對URL長度的限制是2083字節(2K+35)。對於其餘瀏覽器,如Netscape、FireFox等,理論上沒有長度限制,其限制取決於操做系統的支持。注意這是限制是整個URL長度,而不單單是你的參數值數據長度。緩存
3. GET方式請求的數據會被瀏覽器緩存起來,所以其餘人就能夠從瀏覽器的歷史記錄中讀取到這些數據,例如帳號和密碼等。在某種狀況下,GET方式會帶來嚴重的安全問題。而POST方式相對來講就能夠避免這些問題。安全
get請求和post請求在服務器端的區別:服務器
4. 在客戶端使用get請求時,服務器端使用Request.QueryString來獲取參數,而客戶端使用post請求時,服務器端使用Request.Form來獲取參數.post
HTTP標準包含這兩種方法是爲了達到不一樣的目的。POST用於建立資源,資源的內容會被編入HTTP請示的內容中。例如,處理定貨表單、在數據庫中加入新數據行等。編碼
當請求無反作用時(如進行搜索),即可使用GET方法;當請求有反作用時(如添加數據行),則用POST方法。一個比較實際的問題是:GET方法可能會產生很長的URL,或許會超過某些瀏覽器與服務器對URL長度的限制。操作系統
若符合下列任一狀況,則用POST方法:orm
* 請求的結果有持續性的反作用,例如,數據庫內添加新的數據行。資源
* 若使用GET方法,則表單上收集的數據可能讓URL過長。
* 要傳送的數據不是採用7位的ASCII編碼。
若符合下列任一狀況,則用GET方法:
* 請求是爲了查找資源,HTML表單數據僅用來幫助搜索。
* 請求結果無持續性的反作用。
* 收集的數據及HTML表單內的輸入字段名稱的總長不超過1024個字符。