美文网首页学习准备
HTTP请求GET和POST的区别

HTTP请求GET和POST的区别

作者: 九遐 | 来源:发表于2018-09-07 10:53 被阅读146次
image.png

GET和POST的区别可以归结为两方面,一方面是规范(specification)的区别,另一方面是用法和实现(implementation)上的区别

规范上的区别

HTTP有关GET和POST的请求规范定义在RFC7231

  • GET的语义是请求获取指定的资源;POST的语义是根据请求负荷(报文主体)对指定的资源做出处理,具体的处理方式视资源类型而不同,比如提交表单。
  • GET方法是安全、幂等、可缓存的(除非有 Cache-ControlHeader的约束);POST不安全,不幂等,(大部分实现)不可缓存。
  • GET方法的报文主体没有任何语义;POST的报文大部分都具有特定语义。

实现上或者用法上的区别

  • 请求方式
    • GET请求的时候可以有参数也可以无参数;参数可以放在path里也可以放在header里
    • POST请求的报文一般放在BODY里面,有时候需要设置header
  • 提交的数据长度
    • GET从理论上或者规范上对数据长度没有限制,但浏览器和操作系统会对这个长度有限制。比如IE对URL长度的限制是2083字节
    • POST也没有大小限制的,HTTP协议规范也没有进行大小限制。但服务器一般对长度都有限制,比如微软的 IIS 6.0默认ASP POST数据量最大为200KB,每个表单域限制是100KB
  • 网络安全
    • GET因为有缓存和明文传输,安全性相对较弱。使用GET提交敏感数据还可能会造成Cross-site request forgery攻击
    • POST 安全性相对较高
  • 数据包个数
    • GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据)
    • POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。但是,从客户端的角度来看:并不是所有的Server都会正确实现100-continue协议,如果Client发送 头{"Expect":"100-continue"}消息后,在timeout时间内无响应,Client需要立马上传POST数据;有些Server会错误实现100-continue协议,在不需要此协议时返回100,此时客户端应该忽略。从服务器的角度来看:正常情况下,收到请求后,返回100或错误码;如果在发送100-continue前收到了POST数据(客户端提前发送POST数据),则不发送100响应码(略去)。具体可以参考 https://www.w3.org/Protocols/rfc2616/rfc2616-sec8.html#sec8.2.3
    • 请注意:对于SOA架构的后台RESTful接口,GET和POST都是请求一次,很少见到请求两次的POST。
  • 其他区别
    • GET在浏览器回退时是无害的,而POST会再次提交请求。
    • GET产生的URL地址可以被Bookmark,而POST不可以。
    • GET请求只能进行url编码,而POST支持多种编码方式。
    • GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。
    • 对参数的数据类型,GET只接受ASCII字符,而POST没有限制。

相关文章

  • POST和GET的区别

    Post和Get请求的区别GET和POST是HTTP请求的两种基本方法,最直观的区别就是GET把参数包含在URL中...

  • 二十一(4)、Ajax请求方式的区别 ------ 2020-0

    1、HTTP的请求方式 2、GET系列请求 3、POST系列请求 4、GET系列和POST系列请求的本质区别 5、...

  • Http和Https

    Http 参考文章关于HTTP协议,一篇就够了 GET和POST请求的区别 GET请求例子: GET /books...

  • OkHttp基本使用流程总结

    http请求主要是Get和Post。二者都分为的同步和异步请求。 Get和Post的区别: Get用来做简单的数据...

  • HTTP中GET和POST的区别

    一、HTTP中GET和POST的区别 GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开...

  • get 和post 请求的区别

    get和post请求区别: 1.get请求提交的内容都在网址后面(URL后面),而post请求的内容都在http响...

  • Nodejs 初学http的get,post请求

    对于http的get,post请求的区别,我的理解有下面两点: http的get请求代码如下: http的post...

  • 面试复习-网络

    网络 HTTP请求类型 GET POST HEAD PUT DELETE OPTION GET POST区别 GE...

  • 记录vue一个小坑

    发送post和get请求的参数key值有区别 //get发送参数this.$http.get('http://xx...

  • 你不知道的GET&POST!

    HTTP中GET与POST的区别 GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的...

网友评论

    本文标题:HTTP请求GET和POST的区别

    本文链接:https://www.haomeiwen.com/subject/zbsxgftx.html