get与post的区别

GET一般用于获取/查询资源信息,而POST一般用于更新资源信息
说完原理性的问题,我们再从表面现像上面看看GET和POST的区别:
1.GET请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),以?分割URL和传输数据。
POST把提交的数据则放置在是HTTP包的包体中。
2."GET方式提交的数据最多只能是1024字节,理论上POST没有限制,可传较大量的数据,IIS4中最大为80KB,IIS5中为100KB"??!

以上这句是我从其他文章转过来的,其实这样说是错误的,不准确的:

1).首先是"GET方式提交的数据最多只能是1024字节",因为GET是通过URL提交数据,那么GET可提交的数据量就跟URL的长度有直接关系了。而实际上,URL不存在参数上限的问题,HTTP协议规范没有对URL长度进行限制。这个限制是特定的浏览器及服务器对它的限制。IE对URL长度的限制是2083字节(2K+35)。对于其他浏览器,如Netscape、FireFox等,理论上没有长度限制,其限制取决于操作系统的支持。

 注意这是限制是整个URL长度,而不仅仅是你的参数值数据长度。

 (2).理论上讲,POST是没有大小限制的,HTTP协议规范也没有进行大小限制,说“POST数据量存在80K/100K的大小限制”是不准确的,POST数据是没有限制的,起限制作用的是服务器的处理程序的处理能力。

总结一下,Get是向服务器发索取数据的一种请求,而Post是向服务器提交数据的一种请求,在FORM(表单)中,Method默认为"GET",实质上,GET和POST只是发送机制不同,并不是一个取一个发!

get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。

对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。

get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。

get安全性非常低,post安全性较高。


HTTP 定义了与服务器交互的不同方法,最基本的方法是 GET 和 POST。事实上 GET 适用于多数请求,而保留 POST 仅用于更新站点。根据 HTTP 规范,GET 用于信息获取,而且应该是 安全的和幂等的。所谓安全的意味着该操作用于获取信息而非修改信息。换句话说,GET 请求一般不应产生副作用。幂等的意味着对同一 URL 的多个请求应该返回同样的结果。完整的定义并不像看起来那样严格。从根本上讲,其目标是当用户打开一个链接时,她可以确信从自身的角度来看没有改变资源。 比如,新闻站点的头版不断更新。虽然第二次请求会返回不同的一批新闻,该操作仍然被认为是安全的和幂等的,因为它总是返回当前的新闻。反之亦然。POST 请求就不那么轻松了。POST 表示可能改变服务器上的资源的请求。仍然以新闻站点为例,读者对文章的注解应该通过 POST 请求实现,因为在注解提交之后站点已经不同了

 

在FORM提交的时候,如果不指定Method,则默认为GET请求,Form中提交的数据将会附加在url之后,以?分开与url分开。字母数字字符原 样发送,但空格转换为“+“号,其它符号转换为%XX,其中XX为该符号以16进制表示的ASCII(或ISO Latin-1)值。

Get post都是像服务器(主机)的请求方式

1)哪一些情况下,浏览器使用get方式发请求:

 a,直接在浏览器地址栏输入某个地址

 b,点击链接

 c,表单默认的提交方式


 2)get请求的特点

  a,如果有请求参数,会将这些参数添加在请求资源路径的后面(所以,get方式能够提交的参数大小有限制)。

  b,get方式还会将请求参数显示在浏览器地址栏,不安全。


 3)哪一些情况下,浏览器会使用post方式发请求

 设置了表单的method="post"。


 4)post请求的特点

 a,请求参数会添加到实体内容里面,参数大小没有限制。

 b,请求参数不会显示在浏览器地址栏,相对安全(并不会对请求参数加密)。


参数传递方式

get传参

get传参方式是将参数以参数1=参数值1&参数2=参数值2这种形式拼接在URL后面进行传递的,比如说,使用js调用Flash打印一张模板,同时传递2个参数到该模板中,那么其get方式传参打印的url代码为:

http://localhost:8075/WebReport/ReportServer?reportlet=report.cpt&p1=a&p2=b

js调用FR打印方法的完整代码为:

var url="http://localhost:8075/WebReport/ReportServer?reportlet=report.cpt&p1=a&p2=b";

var isPopUp = false;

var config = {url : url,isPopUp : isPopUp}

FR.doURLPDFPrint(config);


post传参

post传参方式是将参数作为http请求的内容,发送到指定的URL中去,并不是拼接在URL中的,其URL如下代码:

http://localhost:8077/TestCase/ReportServer

参数会通过一个专门的格式传递过去,完整代码如下:

    var printurl="http://localhost:8077/TestCase/ReportServer";       

    var reportlets ="[{reportlet: '1.cpt', p1: 'a'}]";  

    var config = {  

            url : printurl,  

            isPopUp : false,  

            data : {  

                    reportlets: reportlets  //将参数放到data里面传到指定的URL中

                }  

    };  

   FR.doURLPDFPrint(config);  

post传参传递的参数是看不到的,保密性比较好。


长度比较

通过参数传递的方式不同,我们可以看到通过get方式传参,其URL的长度会远远长于post方式,这就意味着,get传递参数其长度有限制,如果超过URL限定的长度大小,则无法进行数据传递,但是post方式却没有这方面的限制,其URL的长度是固定的,并没有随着参数的增加而变长




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值