这里来说说get与post的区别与联系

区别与联系:

        1、get是从服务器上获取数据,post则是向服务器传送数据;

        2、get将表单中数据的按照variable=value的形式,添加到action所指向的URL后面,并且两者使用“?”连接,而各个变量之间使用“&”连接。Post是将表单中的数据放在form的数据体中,按照变量和值相对应的方式,传递到action所指向URL;

        所以从上述也可以得到另外两个结论:

                1、get传送的数据量较小,不能大于2KB,这主要是因为受URL长度限制。post传送的数据量较大,所以在上传文件只能使用Post。一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB;

                2、get安全性非常低(因为用户可以通过URL看到),post安全性较高(其所有操作对用户来说都是不可见的)。但是执行效率却比post方法好;

        3、Get限制Form表单的数据集的值必须为ASCII字符;而Post支持整个ISO10646字符集;

        4、Get是Form的默认方法;

        5、Get方式提交来的数据在服务器端用Request.QueryString()来获取,用Post方式提交的数据用Request.Form()来获取(这一点不是很明确);

建议:

        1、如果是包含机密信息的话,建议用post数据提交方式;

        2、在做数据查询时,建议用Get方式;而在做数据添加、修改或删除时,建议用Post方式;
################################################
1、get的2083是ie的限制。其他浏览器没有。
2、上传文件大小限制可以设置,各种webserver都可以。
3、get/post字符集无所谓,get加到url后面会urlencode,post是二进制的body
4、其实还有head、put、delete等等方式。这些都是method,还有enctype:application/x-www-form-urlencoded、multipart/form-data、text/plain等等。
5、parameter里都有。asp.net和jsp的request基本一样。

6、机密数据还是https的好。
7、传几个id、type之类的参数,用get合适,比如列表详细链接等等。一般的表单还是post吧。
####################################################
很简单的一个原则,获取数据用get,改变/添加数据用post。
因为get会被浏览器缓存,post不会。这样可以提高响应速度。
并且用get用户可以从url中看到自己的操作,优化好的情况下可以使get url具备可读性/观赏性。
####################################################
关于安全:
GET requests can be cached
GET requests can remain in the browser history
GET requests can be bookmarked
GET requests can be distributed & shared

所以如果有敏感数据是不应该用get方法的,但是有例外,就是ajax请求时候即使是敏感字段也可以用get。

关于响应速度:
1.get请求是可以被客户端缓存的。比post高效。
2.AJAX环境中get响应快速,post需要先发送header再发送post data。

猜你喜欢

转载自andrew-8323.iteye.com/blog/1740653