標籤:
很多人都分不清GET與POST的區別,以及什麼時候用GET?什麼時候用POST?
GET和POST兩種方法都是將資料送到伺服器,但你該用哪一種呢?
HTTP標準包含這兩種方法是為了達到不同的目的。POST用於建立資源,資源的內容會被編入HTTP請示的內容中。例如,處理訂貨表單、在資料庫中加入新資料行等。
當請求無副作用時(如進行搜尋),便可使用GET方法;當請求有副作用時(如在資料庫添加資料行),則用POST方法。一個比較實際的問題是:GET方法可能會產生很長的URL,或許會超過某些瀏覽器與伺服器對URL長度的限制。
若符合下列任一情況,則用POST方法:
請求的結果有持久性的副作用,例如,資料庫內添加新的資料行。
若使用GET方法,則表單上收集的資料可能讓URL過長。
要傳送的資料不是採用7位的ASCII編碼。
若符合下列任一情況,則用GET方法:
請求是為了尋找資源,HTML表單資料僅用來協助搜尋。
請求結果無持久性的副作用。
收集的資料及HTML表單內的輸入欄位名稱的總長不超過1024個字元。
表單提交中Get和Post方式的區別
1. get是從伺服器上擷取資料,post是向伺服器傳送資料。
2. get是把參數資料隊列加到提交表單的ACTION屬性所指的URL中,值和表單內各個欄位一一對應,在URL中可以看到。post是通過HTTP post機制,將表單內各個欄位與其內容放置在HTML HEADER內一起傳送到ACTION屬性所指的URL地址。使用者看不到這個過程。
3. 對於get方式,伺服器端用Request.QueryString擷取變數的值,對於post方式,伺服器端用Request.Form擷取提交的資料。
4. get傳送的資料量較小,不能大於2KB。post傳送的資料量較大,一般被預設為不受限制。但理論上,IIS4中最大量為80KB,IIS5中為100KB。
5. get安全性非常低,post安全性較高。
HTML表單Form中的get和post方法
在B/S應用程式中,前台與背景資料互動,都是通過Html中Form表單完成的。Form提供了兩種資料轉送的方式??get和post。雖然它們都是資料的提交方式,但是在實際傳輸時確有很大的不同,並且可能會對資料產生嚴重的影響。雖然為了方便的得到變數值,Web容器已經屏蔽了二者的一些差異,但是瞭解二者的差異在以後的編程也會很有協助的。
Form中的get和post方法,在資料轉送過程中分別對應了HTTP協議中的GET和POST方法。二者主要區別如下:
1、Get是用來從伺服器上獲得資料,而Post是用來向伺服器上傳遞資料。
2、Get將表單中資料的按照variable=value的形式,添加到action所指向的URL後面,並且兩者使用“?”串連,而各個變數之間使用“&”串連;Post是將表單中的資料放在form的資料體中,按照變數和值相對應的方式,傳遞到action所指向URL。
3、Get是不安全的,因為在傳輸過程,資料被放在請求的URL中,而如今現有的很多伺服器、Proxy 伺服器或者使用者代理程式都會將請求URL記錄到記錄檔中,然後放在某個地方,這樣就可能會有一些隱私的資訊被第三方看到。另外,使用者也可以在瀏覽器上直接看到提交的資料,一些系統內部訊息將會一同顯示在使用者面前。Post的所有操作對使用者來說都是不可見的。
4、Get傳輸的資料量小,這主要是因為受URL長度限制;而Post可以傳輸大量的資料,所以在上傳檔案只能使用Post(當然還有一個原因,將在後面的提到)。
5、Get限制Form表單的資料集的值必須為ASCII字元;而Post支援整個ISO10646字元集。
6、Get是Form的預設方法。
GET和POST區別和用法