1樓:夜獨行孤單
1、get 方法通過 url 請求來傳遞使用者的資料,將表單內各欄位名稱與其內容,以成對的字串連線,置於 action 屬性所指程式的 url 後,如http://www.domain.
資料都會直接顯示在 url 上,就像使用者點選一個連結一樣;post 方法通過 http post 機制,將表單內各欄位名稱與其內容放置在 html 表頭(header)內一起傳送給伺服器端交由 action 屬效能所指的程式處理,該程式會通過標準輸入(stdin)方式,將表單的資料讀出並加以處理
2、 get 方式需要使用 request.querystring 來取得變數的值;而 post 方式通過 request.form 來訪問提交的內容
3、get 方式傳輸的資料量非常小,一般限制在 2 kb 左右,但是執行效率卻比 post 方法好;而 post 方式傳遞的資料量相對較大,它是等待伺服器來讀取資料,不過也有位元組限制,這是為了避免對伺服器用大量資料進行惡意攻擊,根據微軟方面的說法,微軟對用 request.form() 可接收的最大資料有限制,iis 4 中為 80 kb 位元組,iis 5 中為 100 kb 位元組
建議:除非你肯定你提交的資料可以一次性提交,否則請儘量用 post 方法
4、get 方式提交資料,會帶來安全問題,比如一個登陸頁面,通過 get 方式提交資料時,使用者名稱和密碼將出現在 url 上,如果頁面可以被快取或者其他人可以訪問客戶這臺機器,就可以從歷史記錄獲得該使用者的帳號和密碼,所以表單提交建議使用 post 方法;post 方法提交的表單頁面常見的問題是,該頁面如果重新整理的時候,會彈出一個對話方塊
建議:出於安全性考慮,建議最好使用 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中,而如今現有的很多伺服器、**伺服器或者使用者**都會將請求url記錄到日誌檔案中,然後放在某個地方,這樣就可能會有一些隱私的資訊被第三方看到。另外,使用者也可以在瀏覽器上直接看到提交的資料,一些系統內部訊息將會一同顯示在使用者面前。post的所有操作對使用者來說都是不可見的。
4、get傳輸的資料量小,這主要是因為受url長度限制;而post可以傳輸大量的資料,所以在上傳檔案只能使用post(當然還有一個原因,將在後面的提到)。
5、get限制form表單的資料集的值必須為ascii字元;而post支援整個iso10646字符集。
6、get是form的預設方法。
*.post傳輸資料時,不需要在url中顯示出來,而get方法要在url中顯示。
*.post傳輸的資料量大,可以達到2m,而get方法由於受到url長度的限制,只能傳遞大約1024位元組.
*.post顧名思義,就是為了將資料傳送到伺服器段,get就是為了從伺服器段取得資料.而get之所以也能傳送資料,只是用來設計告訴伺服器,你到底需要什麼樣的資料.
post的資訊作為http請求的內容,而get是在http頭部傳輸的。
網頁表單當中的get方式和post方式的區別
1、get方式可傳遞的資料量有限,大約是2k左右,而post在iis5當中則達到100k,一般人們可以預設post是無限制的;
2、get方式在提交帳號密碼等表單時不如post方式安全。在get提交表單以後瀏覽器的url會將你提交的表單引數全部顯示在位址列當中,而且可以通過機器的快取來直接檢視到各項引數;而post方式則不會;
3、get方式在後臺處理頁面用request.querystring接收各個引數;而post則用request.form獲取;
4、get方式會忽略