HTTP協議中請求方法的Get和Post

renegade發表於2006-12-18


HTTP協議中請求方法Get和Post的區別是什麼?

Get:是以實體的方式得到由請求URI所指定資源的資訊,如果請求URI只是一個資料產生過程,那麼最終要在響應實體中返回的是處理過程的結果所指向的資源,而不是處理過程的描述。

Post:用來向目的伺服器發出請求,要求它接受被附在請求後的實體,並把它當作請求佇列中請求URI所指定資源的附加新子項,Post被設計成用統一的方法實現下列功能:
1:對現有資源的解釋
2:向電子公告欄、新聞組、郵件列表或類似討論組發資訊。
3:提交資料塊
4:透過附加操作來擴充套件資料庫

從上面描述可以看出,Get是向伺服器發索取資料的一種請求;而Post是向伺服器提交資料的一種請求,要提交的資料位於資訊頭後面的實體中。


1. get是從伺服器上獲取資料,post是向伺服器傳送資料。2. get是把引數資料佇列加到提交表單ACTION屬性所指的URL中,值和表單內各個欄位一一對應,在URL中可以看到。post是透過HTTP post機制,將表單內各個欄位與其內容放置在HTML HEADER內一起傳送到ACTION屬性所指的URL地址。使用者看不到這個過程。

get方法會在IE位址列裡顯示錶示你提交時候所帶的值
post方法不會


HTTP 定義了與伺服器互動的不同方法,最基本的方法是 GET 和 POST。事實上 GET 適用於多數請求,而保留 POST 僅用於更新站點。根據 HTTP 規範,GET 用於資訊獲取,而且應該是 安全的和 冪等的。所謂安全的意味著該操作用於獲取資訊而非修改資訊。換句話說,GET 請求一般不應產生副作用。冪等的意味著對同一 URL 的多個請求應該返回同樣的結果。完整的定義並不像看起來那樣嚴格。從根本上講,其目標是當使用者開啟一個連結時,她可以確信從自身的角度來看沒有改變資源。比如,新聞站點的頭版不斷更新。雖然第二次請求會返回不同的一批新聞,該操作仍然被認為是安全的和冪等的,因為它總是返回當前的新聞。反之亦然。POST 請求就不那麼輕鬆了。POST 表示可能改變伺服器上的資源的請求。仍然以新聞站點為例,讀者對文章的註解應該透過 POST 請求實現,因為在註解提交之後站點已經不同了(比方說文章下面出現一條註解);

在FORM提交的時候,如果不指定Method,則預設為GET請求,Form中提交的資料將會附加在url之後,以?分開與url分開。字母數字字元原樣傳送,但空格轉換為“+“號,其它符號轉換為%XX,其中XX為該符號以16進製表示的ASCII(或ISO Latin-1)值。GET請求請提交的資料放置在HTTP請求協議頭中,而POST提交的資料則放在實體資料中;

GET方式提交的資料最多隻能有1024位元組,而POST則沒有此限制。


學習HTML表單(Form)最關鍵要掌握的有三個要點:

表單控制元件(Form Controls)
Action
Method

先說表單控制元件(Form Controls),透過HTML表單的各種控制元件,使用者可以輸入文字資訊,或者從選項中選擇,以及做提交的操作。比如上面的例句裡,input type= "text"就是一個表單控制元件,表示一個單行輸入框。

使用者填入表單的資訊總是需要程式來進行處理,表單裡的action就指明瞭處理表單資訊的檔案。比如上面例句裡的。

至於method,表示了傳送表單資訊的方式。method有兩個值:get和post。get的方式是將表單控制元件的name/value資訊經過編碼之後,透過URL傳送(你可以在位址列裡看到)。而post則將表單的內容透過http傳送,你在位址列看不到表單的提交資訊。那什麼時候用get,什麼時候用post呢?一般是這樣來判斷的,如果只是為取得和顯示資料,用get;一旦涉及資料的儲存和更新,那麼建議用post。


HTML表單(Form)常用控制元件(Controls)

HTML表單(Form)常用控制元件有:

-----------------------------------------------------------------
表單控制元件(Form Contros) 說明
-----------------------------------------------------------------
input type="text" 單行文字輸入框
input type="submit" 將表單(Form)裡的資訊提交給表單裡action所指向的檔案
input type="checkbox" 核取方塊
input type="radio" 單選框
select 下拉框
textArea 多行文字輸入框
input type="password" 密碼輸入框(輸入的文字用*表示)
-----------------------------------------------------------------

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/143614/viewspace-884663/,如需轉載,請註明出處,否則將追究法律責任。

相關文章