您的位置:首页 > 理论基础 > 计算机网络

HTTP POST和GET区别简介

2012-06-29 10:26 288 查看
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'去掉。

<form id="form1" method="post" action="WebForm1.aspx">
<div>
<input type="text" value="" name="data"/>
<input type="submit" value="提交"/>
</div>
</form>


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

protected void Page_Load(object sender, EventArgs e)
{

String value0 = Request.Form["data"];
String value1 = Request.QueryString["data"];
String value2 = Request.Params.Get("data");
String value3 = Request["data"];
Response.Write(String.Format("Form表单获取值={0}<br/>QueryString获取值={1}<br/>ParamsGet获取值={2}<br/>Request获取值={3}",
value0, value1, value2, value3));
}


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

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

//
// 摘要:
//     获取 System.Web.HttpRequest.QueryString、System.Web.HttpRequest.Form、System.Web.HttpRequest.ServerVariables
//     和 System.Web.HttpRequest.Cookies 项的组合集合。
//
// 返回结果:
//     一个 System.Collections.Specialized.NameValueCollection 对象。
public NameValueCollection Params { get; }

我们可以看到摘要里面说它可以获取 System.Web.HttpRequest.QueryString、System.Web.HttpRequest.Form的数据,这也就是原因,我估计value3的方法也是底层调用了它。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: