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來擷取參數.
HTTP标準包含這兩種方法是為了達到不同的目的。POST用于建立資源,資源的内容會被編入HTTP請示的内容中。例如,處理訂貨表單、在資料庫中加入新資料行等。
當請求無副作用時(如進行搜尋),便可使用GET方法;當請求有副作用時(如添加資料行),則用POST方法。一個比較實際的問題是:GET方法可能會産生很長的URL,或許會超過某些浏覽器與伺服器對URL長度的限制。
若符合下列任一情況,則用POST方法:
* 請求的結果有持續性的副作用,例如,資料庫内添加新的資料行。
* 若使用GET方法,則表單上收集的資料可能讓URL過長。
* 要傳送的資料不是采用7位的ASCII編碼。
若符合下列任一情況,則用GET方法:
* 請求是為了查找資源,HTML表單資料僅用來幫助搜尋。
* 請求結果無持續性的副作用。
* 收集的資料及HTML表單内的輸入字段名稱的總長不超過1024個字元。