表單的 Method 屬性指定傳輸信息的格式,其中有兩種取值 Get(默認(rèn)值)和 Post,分別指定兩種不同的傳輸方式。
兩者的區(qū)別如下:
1. 使用 Get 方式時(shí),瀏覽器將傳遞的值綁定在頁(yè)面所有控件上,成為一個(gè)查詢(xún)字符串,且附在被請(qǐng)求頁(yè)面的 URL 上,當(dāng)這個(gè)請(qǐng)求到達(dá) Web 服務(wù)器時(shí),其值由 ASP 的 Request.QueryString 集合收集并提供。而使用 Post 方式時(shí),瀏覽器將值包裝進(jìn)發(fā)送服務(wù)器的 HTTP 報(bào)頭中,通過(guò) Request.Form 集合收集并提供。
2. 使用 Post 方式時(shí),當(dāng)用戶(hù)重新下載表單時(shí),窗體的值將不再保留,其值為空且必須重新輸入。而 Get 方式傳遞的值被存儲(chǔ)為一個(gè)鏈接,將被保留。
3. 使用 Get 方式時(shí),瀏覽器或服務(wù)器的 URL 字符串長(zhǎng)度存在一定的限制,附有長(zhǎng)的字符串可能會(huì)引起溢出和字符串的某些字符被截掉,同時(shí)查詢(xún)字符串出現(xiàn)在瀏覽器的地址欄中,暴露了 HTTP 請(qǐng)求中通過(guò) Web 傳遞的一些重要數(shù)據(jù)。而 Post 無(wú)上述缺陷。
4. 使用 Get 方式時(shí),URL 與查詢(xún)字符串的結(jié)合體不能包含任何空格或其他特殊字符(如 [/][:][?][&] 等),否則 HTTP 請(qǐng)求將出現(xiàn)問(wèn)題。這些特殊字符是用來(lái)分隔 URL 和查詢(xún)字符串的部分,雖然 IE 能夠自動(dòng)正確地將這些特殊字符轉(zhuǎn)換為加號(hào)(+),但其他特殊字符就不能處理了,導(dǎo)致的后果可能會(huì)到不了要請(qǐng)求的頁(yè)面。此時(shí),必須通過(guò) ASP 服務(wù)器對(duì)象提供的 URLEncode 方法進(jìn)行變換處理。而 Post 方式則不存在此類(lèi)問(wèn)題。