Post和Get都是表单属性Method的可选值,Method的默认值为Get。
两者的主要区别在于:
简单的讲,大概就下边两句话:
post传递数据量较大,较安全,用request.form("")取值。
get传递数据量较小,没有post安全性强,用request.querystring("取值") 。
1、服务器端获取数据的方式不同。
post方式传递的数据,必须用request.form("")获取。
get方式传递的数据,必须用request.querystring("")获取。
注意:虽然两种提交方式可以统一用Request("")来获取提交数据,但是这样对程序效率有影响,不推荐使用。
在客户端,Get方式在通过URL提交数据,提交后在地址栏中的地址如图所示:
比如说在登陆表单中用Get方式,用户输入的用户名和密码将在地址栏中暴露无遗。如果:
>登陆页面可以被浏览器缓存;
>其他人可以访问客户的这台机器。
那么,别人即可以从浏览器的历史记录中,读取到此客户的账号和密码。
所以,在某些情况下,get方法会带来严重的安全性问题。在Form中,建议使用post方法。
3、post比get传递数据量大。
ID的url长度是有限制的,当url过长时会自动截取超长字符。这样就容易引发一个问题:当传递的参数过多,导致url过长时,url自动截取超长字符,最终传递参数部分获取不到。以下是从别人的文章里摘录的一段话(“IE的Get请求(URL)的最大长度限制”问题的解决办法):
给第三方提供接口的时候,设计了一个传入大量id的接口,结果昨天测试发现,传入了100个ID,结果只返回55个的数据,一开始以为是API有问题,后台调试才发现,原来是URL自己截断了!后来仔细了解了一下,原来通过GET方式请求,并传递一个过长的参数的话,IE会自动的截去超出最大长度的字符。微软的权威解释,IE的url最大长度是2083个字节,可以用于GET传递数据的长度是2048个字节。Maximum URL length is 2,083 characters in Internet Explorer.http://support.microsoft.com/default.aspx?scid=kb;EN-US;q208427
其实也比较容易解决,只要换成post请求就可以了