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