GET与POST区别

?报文上

  • GET 和 POST 只是 HTTP 协议中两种请求方式(异曲同工),而 HTTP 协议是基于 TCP/IP 的应用层协议,无论 GET还是 POST,用的都是同一个传输层协议,所以在传输上,没有区别。
  • 报文格式上,不带参数时,最大区别就是第一行方法名不同, 仅仅是报文的几个字符不同。而带参数时,get请求参数放在url中,post请求放在body中。

?格式上

  • GET请求:http://localhost:2454/RequestMethod/AddInfo.ashx?txtName=itcast&txtPwd=123,参数写在?后面,参数与参数用&分割
  • POST请求:http://localhost:2454/RequestMethod/AddInfo.ashx

?长度限制上

  • 发送数据时,get方法向URL添加数据的长度是受限制的,最大长度为2048个字符。get只允许ASCII字符。
  • post方法由于参数是在body中,所以在长度上是没有限制的,也允许是二进制数据。

?安全上

  • 与Post相比,get请求安全性较差,因为发送的数据是URL中的一部分,也可以被缓存,也可以在浏览器历史上查看。可见上来说,数据在URL中所有人都是可见的。
  • Post请求相对来说较安全,参数不会被保存在浏览器历史或web服务器日志中。
  • 而从传输的角度来看,两种方式都是不安全的,HTTP协议是明文传输的,只要在网络节点上抓包,就能完整的获取数据报文。想安全传输,只能加密,使用HTTPS协议。

?接收数据

  • string userName=context.Request.QueryString[“txtName”]; //get请求方式接收数据
  • string userPwd=context.Request.Form[“txtPwd”]; //post请求方式接收数据

?情景

使用GET请求的情景:

  • 当查询信息时,信息只用来搜索,如搜索框。
  • 单击超链接
  • 在浏览器中输入地址,回车,使用的是get请求
  • 请求结果无持续性的副作用

使用POST请求的情景:

  • 信息长度在2048字符以上
  • 传送的数据不是ASCII
  • 请求的动作有持续性的副作用,如向数据库表中添加数据行
以上是本人的一点见解,如有更全面的理解请下方评论或其他方式与我交流。

你可能感兴趣的:(★B/S)