1. 程式人生 > >http協議中get和post方法的優點和缺點

http協議中get和post方法的優點和缺點

在資料傳輸過程中分別對應了HTTP協議中的GET和POST方法。二者主要區別如下:
1、Get是用來從伺服器上獲得資料,而Post是用來向伺服器上傳遞資料。
2、Get將表單中資料的按照variable=value的形式,新增到action所指向的URL後面,並且兩者使用“?”連線,而各個變數之間使用 “&”連線;Post是將表單中的資料放在form的資料體中,按照變數和值相對應的方式,傳遞到action所指向URL。
3、Get是不安全的,因為在傳輸過程,資料被放在請求的URL中,而如今現有的很多伺服器、代理伺服器或者使用者代理都會將請求URL記錄到日誌檔案中,然後放在某個地方,這樣就可能會有一些隱私的資訊被第三方看到。另外,使用者也可以在瀏覽器上直接看到提交的資料,一些系統內部訊息將會一同顯示在使用者面前。Post的所有操作對使用者來說都是不可見的。
4、Get傳輸的資料量小,這主要是因為受URL長度限制;而Post可以傳輸大量的資料,所以在上傳檔案只能使用Post(當然還有一個原因,將在後面的提到)。
5、Get限制Form表單的資料集的值必須為ASCII字元;而Post支援整個ISO10646字符集。
6、Get是Form的預設方法。

action的引號內填的是路徑方法,比如傳送到郵箱或其他網頁什麼的

post請求只能適合於頁面到頁面之間的轉移請求,從位址列中直接輸入地址,發出的請求是無法形成post請求的,post情況下,前一個頁面的<input>域被作為引數傳遞到伺服器,get情況下,引數依靠地址中“?”後面的字串構成引數。而frame中src屬性指定的地址,恰恰如同從位址列中輸入的地址一樣,發出的請求是get請求。

GET和POST兩種方法都是將資料送到伺服器,但你該用哪一種呢?
HTTP標準包含這兩種方法是為了達到不同的目的。POST用於建立資源,資源的內容會被編入HTTP請示的內容中。例如,處理訂貨表單、在資料庫中加入新資料行等。
當請求無副作用時(如進行搜尋),便可使用GET方法;當請求有副作用時(如在資料庫新增資料行),則用POST方法。一個比較實際的問題是:GET方法可能會產生很長的URL,或許會超過某些瀏覽器與伺服器對URL長度的限制。
若符合下列任一情況,則用POST方法:

  • 請求的結果有持續性的副作用,例如,資料庫內新增新的資料行。
  • 若使用GET方法,則表單上收集的資料可能讓URL過長。
  • 要傳送的資料不是採用7位的ASCII編碼。

若符合下列任一情況,則用GET方法:   

  • 請求是為了查詢資源,HTML表單資料僅用來幫助搜尋。
  • 請求結果無持續性的副作用。
  • 收集的資料及HTML表單內的輸入欄位名稱的總長不超過1024個字元。

表單提交中Get和Post方式的區別有5點

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安全性較高。