对于我学习时,会经常向后端请求数据,而最常见的就数GET与POST。经常听到讨论这两种方式的区别,同时应该也是前端面试时容易问到的,一开始我也认为这个问题应该就是送分题,很简单,很多人都能说出一二,例如POST安全,GET不安全啥的,可是他们都是基于HTTP协议,HTTP是明文传输,就跟裸奔似的,它本身就是不加密,所有都不安全!只能说POST相对于GET的话安全一点。所以这个简单的问题其实不简单。要说区别,还要看具体问题具体分析:

  1. 是基于什么前提的?
    说区别前要看是基于什么前提的? 如果什么前提没有,不使用任何规范,只考虑理论上的HTTP,那么GET和POST没有区别,只有名字不一样。
  2. 如果是基于RFC规范的。
    (1)理论上的(Specification):GET和POST具有相同语法的,但是有不同的语义。GET是用来获取 数据的,POST是用来发送数据的,其他方面没有区别。
    (2)实现上的(Implementation):各种浏览器,就是这个规范的实现者(web环境下)。 常见的一些不同:
  • GET的数据在URL是可见的。POST请求不显示在URL中。
  • GET对长度是有限制的,POST对长度是无限制的。(GET长度限制是各大浏览器厂商限制的,不同浏览器对GET长度限制不同)
  • GET请求的数据可以收藏为书签,POST请求到的数据不可收藏为书签。
  • GET请求后,按后退按钮、刷新按钮无影响,POST数据会重新提交。
  • GET编码类型:application/x-www-form-url,POST的编码类型:有很多种:encodeapplication/xwww-form-urlencoded、multipart/form-data
  • GET历史参数被保存在浏览器里,POST不会保存在浏览器中的。
  • GET只允许ASCll、POST没有编限制,允许发二进制的。
  • GET与POST相比,GET安全性较差,因为所发的数据是URL的一部分。POST也并不算安全,因为 HTTP都是明文传输
  • GET请求产生一个TCP数据包,POST产生两个数据包(Firefox例外)

application(应用程序)
encodeapplication(编码应用程序)
multipart(多部分)

注:本人菜鸡一个,有误联系QQ:1121649827
欢迎批评0.0