【ASP.NET】POST 和 GET 两种请求方式

  • Post author:
  • Post category:其他


简介:


GET和POST 是HTTP的两种基本请求方法,但凡是学习过WEB开发的人都对这两个请求有大概的认识,最直观的认识就是

GET请求的时候会把参数包含在URL中



POST请求相对安全一些,通过request body 传递参数


下面就来介绍一下很多关于POST和GET两种请求之间相对权威的对比:

GET POST
是否保存缓存 请求可以被缓存,历史记录里面有记录 请求不会被缓存,历史记录中查不到
后退按钮/刷新 无影响 数据会被重新提交
对数据长度的限制 当发送数据的时候,GET方法向URL添加数据,URL的长度是受限制的,最大长度为2048个字符。 无限制
对数据类型的限制 只允许ASCII字符 没有限制
安全性

与POST相比,GET的安全性更差,因为所发送的数据是RUL的一部分,

发送密码或者其他敏感信息的时候不能用post

POST比GET更加安全,因为参数不会被保存在浏览器中

看完上面的对比你以为这就结束了?网上很多网友对POST和GET进行了深入的学习,他们扒下了GET和POST的外衣,让我们一起来瞅瞅!! 很多人认为POST和GET是一样的??

首先GET和POST是什么?

答:    大家都会想到他是HTTP协议的两种发送请求的方法

那么HTTP有是什么?

答:  HTTP是基于TCP/IP的关于数据如何在web中通信的协议,HTTP的底层是TCP/IP ,所以GET和POST

的底层也就是TCP/IP。



举个现实生活中的例子:

在我大网络世界中,TCP就像汽车,我们用TCP来运输数据,它很可靠,从来不会发生丢件少件的现象。但是如果路上跑的全是看起来一模一样的汽车,那这个世界看起来是一团混乱,送急件的汽车可能被前面满载货物的汽车拦堵在路上,整个交通系统一定会瘫痪。为了避免这种情况发生,

交通规则HTTP诞生了

。HTTP给汽车运输设定了好几个服务类别,有GET, POST, PUT, DELETE等等,


HTTP规定,当执行GET请求的时候,要给汽车贴上GET的标签(设置method为GET),而且要求把传送的数据放在车顶上(url中)以方便记录





如果是POST请求,就要在车上贴上POST的标签,并把货物放在车厢里。

最后有一个重量级的大佬上场!

GET和POST还有一个重大区别,简单的说:


GET产生一个TCP数据包;POST产生两个TCP数据包。

对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);

而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。

也就是说,GET只需要汽车跑一趟就把货送到了,而POST得跑两趟,第一趟,先去和服务器打个招呼“嗨,我等下要送一批货来,你们打开门迎接我”,然后再回头把货送过去。

如果我们在页面中同时有get请求也有post请求,那么该如何区分?  何时发送get请求?何时发送post请求?



方法:




如果在form标签中写了runat=server 那么在aspx.cs中直接使用IsPostBack





post请求

,该属性的值就是

true

,如果是

get请求

,该属性的值就为

false


IspostBack 是根据 __VIEWSTATE隐藏域进行判断的,如果是post 请求那么该隐藏域的值就会提交到服务器,那么  IsPostBack的属性也就为true



如果将runat=”server”去掉,那么就不能用该属性进行判断是post请求还是get 请求


,因为去掉form标签的runat=server那么就不会产生__VIEWSTATE

隐藏域了

例子:

if(IsPostBack)//如果为post请求,该属性的值为true
            {
                InsertUserInfo();
            }

<body>
    <form id="form1" runat="server">
        <div>

大家明白了吗?  有什么问题可以在评论区留言!!



版权声明:本文为qq_30631063原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。