HTTP协议的几种请求方法
转:http://blog.chinaunix.net/uid-21778123-id-1815443.html
(1)使用范围的区别:
使用GET时,form中的数据集(如input框的value)将被编码到URL中,作为URL的一部分。而使用POST时,form中的数据集则被编码到http协议的header中,构造成消息发送。在使用上,当且仅当请求是幂等(请求任意次都返回同样的结果)时使用GET,而当请求会改变服务器数据或状态时使用POST。当程序设计人员正确的使用GET,POST时,浏览器会给出更好的缓存配合,使响应速度更快。
(2)在form提交阶段的差别:
form 提交的第一步是创建数据集,并根据 ENCTYPE 指定的类型值对数据集进行编码。 ENCTYPE 有两个值:multipart/form-data,application/x-www-form-urlencoded(默认值)。form提交的第 二步是进行数据传输。对于GET方法,数据集使用application/x-www-form-urlencoded编码;而对于POST方法,数据集 的 ENCTYPE 可以指定。
application/x-www-form-urlencoded对form数据集的编码规则:(1)如果是字母或数字,则直接使用其ascii码的十六进制。(2)对于非字母也非数字的字符,则不仅使用其ascii码的十六进制,还要在前面加上“%”。比如“\”,它的ascii码是92,92的十六进制是5c,所以“\”的urlencoded编码就是%5c。相应的解码函数(转载)如下:
|
(3)服务器端处理差别:
原则上,处理GET和POST请求是没有分别的。但由于数据通过不同的方法编码,需要有不同的解码机制。所以,方法变化将导致处理请求的代码变化。比如对 于cgi,处理GET时通过环境变量获得参数,处理POST请求时则通过标准输入(stdin) 获得数据。
(4)实际使用经验的总结:
1、get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过 HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。
2、对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。两种方式的参数都可以用Request来获得。
3、get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。
4、get安全性非常低,post安全性较高。
5、
<--文章完-->