HTTP POST和GET区别简介

来源:互联网 发布:windows vista重装 编辑:程序博客网 时间:2024/05/29 13:34

        Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE

         一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的4个操作。GET一般用于获取/查询资源信息,而POST一般用于更新资源信息 。

下面主要说一下POST和GET两种方式,简单区别如下:

       1.GET方式:请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),以?分割URL和传输数据,多个参数用&连接。

          POST方式:把提交的数据放置在是HTTP包的包体中。因此,GET提交的数据会在地址栏中显示出来,而POST提交,地址栏不会改变。所以就传输的安全性来讲,POST方式比GET方式更加安全。

       2.传输数据的大小:首先声明:HTTP协议没有对传输的数据大小进行限制,HTTP协议规范也没有对URL长度进行限制。

    GET方式:特定浏览器和服务器对URL长度有限制,例如IE对URL长度的限制是2083字节(2K+35)。因此对于GET提交时,传输数据就会受到URL长度的限制。

    POST方式:由于不是通过URL传值,理论上数据不受限。但实际各个WEB服务器会规定对post提交数据大小进行限制,Apache、IIS6都有各自的配置。

下面说一下在ASP.NET里面怎么获取POST和GET方式的数据。

   1.新建一个Web页面,假设它是发起web请求的页面,为了展示方便我们把form表单的runat='server'去掉。

   

[html] view plaincopyprint?
  1. <span style="font-family:Microsoft YaHei;"> <form id="form1" method="post" action="WebForm1.aspx">  
  2.     <div>  
  3.         <input type="text" value="" name="data"/>  
  4.         <input type="submit" value="提交"/>  
  5.     </div>  
  6.     </form></span>  


在这里我们指定请求方式是post 处理web请求的页面是WebForm1.aspx,下面我们在WebForm1.aspx页面后台获取这个表单的数据。

[csharp] view plaincopyprint?
  1. <span style="font-family:Microsoft YaHei;"protected void Page_Load(object sender, EventArgs e)  
  2.         {  
  3.   
  4.                 String value0 = Request.Form["data"];  
  5.                 String value1 = Request.QueryString["data"];  
  6.                 String value2 = Request.Params.Get("data");  
  7.                 String value3 = Request["data"];  
  8.                 Response.Write(String.Format("Form表单获取值={0}<br/>QueryString获取值={1}<br/>ParamsGet获取值={2}<br/>Request获取值={3}",  
  9.                     value0, value1, value2, value3));  
  10.             }</span>  


在这里我使用了 4种方式获取第一个页面的data值,通过更改 method="post" 方式我们执行这个页面可以发现,value2 和value3的值是始终都可以获取的到的,当使用post方式请求时value0可以获取数据 value1获取不到,当使用get方式时value1可以获取数据,value0获取不到。原因就是我们上边说的第一点,他们传输数据的方式不一样,而value2

 value3可以获取到数据,我们看一下Request.Params方法的说明:

[csharp] view plaincopyprint?
  1. <span style="font-family:Microsoft YaHei;">        //  
  2.         // 摘要:  
  3.         //     获取 System.Web.HttpRequest.QueryString、System.Web.HttpRequest.Form、System.Web.HttpRequest.ServerVariables  
  4.         //     和 System.Web.HttpRequest.Cookies 项的组合集合。  
  5.           //  
  6.         // 返回结果:  
  7.         //     一个 System.Collections.Specialized.NameValueCollection 对象。  
  8.         public NameValueCollection Params { get; }  
  9. </span>  

我们可以看到摘要里面说它可以获取 System.Web.HttpRequest.QueryString、System.Web.HttpRequest.Form的数据,这也就是原因,我估计value3的方法也是底层调用了它。



http://blog.csdn.net/gxiangzi/article/details/7701443

0 0
原创粉丝点击