表单的 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 方式则不存在此类问题。