简单概括下get请求和post请求的区别

文章目录

  • get请求和post请求的区别
    • 1、标准答案
    • 2、进一步探索get和post的底层

get请求和post请求的区别

1、标准答案

区别一,参数位置:GET请求把参数包含在URL中,POST将参数包含在请求体request body中。

区别二,回退:GET在浏览器回退时是无害的,而POST会再次提交请求。

区别三,是否会被标记:GET请求产生的URL地址可以被Bookmark(标签标记),而POST不可以。

区别四,编码方式:GET请求只能进行url编码,而POST请求支持多种编码方式。

区别五,是否保存记录:GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。

区别六,参数长度限制:GET请求在URL中传送的参数是有长度限制的,而POST因为将参数放到请求体中,所以长度没有限制。

区别七,参数数据类型:GET请求只接受ASCII字符的数据类型,而POST是没有限制的。

区别八,安全性:GET比POST更不安全,因为参数直接暴露在URL中,所以不能用来传递敏感信息。

2、进一步探索get和post的底层

  • 首先,什么是get和post
    这两者其实都是HTTP协议中的发送请求的方式

  • 其次,HTTP的底层是TCP/IP构成,所以GET和POST的底层也是TCP/IP,这么一来,GET和POST其实能做的事情很相似,也就是说,在技术中,你给GET请求用请求体传参,给POST请求用URL传参也不是不可以。

  • 那为什么会出现一个标准答案?
    与其说是答案,不如说是规则,人们按照规则所规定的方式办事,事情总会有序很多,也可以少很多不必要的麻烦。也就是说规定GET请求就将参数放到URL中,而POST请求就将参数放到请求体中。

  • 关于GET请求中参数大小的限制
    对于GET请求,你可以这么想,一个导航栏才多大?如果我参数很多,导航栏肯定是发不下的,而且也不好查看参数;其实究其本质,是因为大多数浏览器通常会限制url长度在2k个字节,而服务器最多处理64k大小的url,超出的部分就不会处理了。

  • 在GET请求的请求体中藏参数可能有什么后果
    不同服务器的处理方式不同,有的可能会帮你从请求体中读取出数据,但有的可能会直接忽略,所以即便GET可以携带参数到请求体中,但也不一定会被后台服务器读取到

  • 补充GET和POST请求的重大区别
    (1)那就是GET产生一个TCP数据包;POST产生两个TCP数据包
    (2)往细点说,对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。
    (3)此外,虽然POST在时间上消耗的更多,但并不能直接用GET请求代替POST请求,原因是,在网络环境好的情况下,发一次包的时间和发两次包的时间差别基本可以无视。而在网络环境差的情况下,两次包的TCP在验证数据包完整性上,有非常大的优点,而且并不是所有浏览器都会在POST中发送两次包,FIrefox就只发送一次。

你可能感兴趣的:(服务器,问题集,网络,网络,服务器,http)