前言:
大家现在度娘一下,查得最多的区别,可能就是:

“Get把参数写在URL中,Post通过请求体来传参的”

“GET没有POST安全,因为Get参数直接显示在URL上”

“Get请求在URL中传送的参数是有长度限制的,而POST是没有的”

但是,真相是这样的吗?!!!真相永远只有一个!!!

先分析一波:

GET和POST与数据如何传递没有关系??

  GET和POST是由HTTP协议定义的。那么使用哪个方式与应用层的数据如何传输是没有相互关系的。从而,HTTP就没有要求,POST一定要放到请求体里面,GET就一定要放到URL里面。

  在HTML标准中,是有着类似的定义。但这只是HTML标准对HTTP协议的用法的约定。也就是规范上说,无区别。

  那么,这个说法是从何而来的呢?是因为有各种浏览器等软件的实现,就变成了我们现在熟知的现象,GET要用URL传参,POST用body传参。

HTTP协议对GET和POST有没有对长度的限制??

  HTTP协议明确地指出了,HTTP请求头和请求体都没有长度的要求。

  而对于URL长度上的限制,有两方面的原因造成:

  1. 浏览器。据说IE对URL长度会限制在2048个字符内。但是就我所知,firefox是支持10W以上的长度。

  2. 服务器。服务器处理超长的URL本身就是一种负担,更何况遭受恶意攻击呢?因此,多数服务器出于安全、稳定等多方面的考虑,会给URL长度加限制。

      但是这个限制是针对所有HTTP请求的,与GET、POST没有关系。

安全不安全和GET、POST有没有关系??

  这个问题,首先你得确认面向对象。

  举个例子:

  1.你现在要让我爸爸妈妈去看看这个URL,你觉得安全吗?

  2.你现在要让一个刚入门的初级功能测试工程师去测试这个链接,你觉得安全吗?

  3.你现在要让安全测试工程师去看看get请求,你觉得安全吗?

  所以,针对不同的人群,安全的定义就会不一样。

“如果你愿意一层一层一层的剥开我的心 ,你会发现你会讶异 ,你是我最压抑 ,最深处的秘密 ”

把Get和Post剥开后,他们的本质上就是TCP链接,并无差别。
只是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同。

那么真相到底是什么呢?

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

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

最新文章

  1. Android性能优化之利用Rxlifecycle解决RxJava内存泄漏
  2. python基础第四天(1)
  3. RecyclerView的基本使用
  4. [ngRepeat:dupes] Duplicates in a repeater are not allowed. Use 'track by' expression to specify uniq
  5. web跨页弹窗选值
  6. android系统的文件夹选择器
  7. 【ZZ】Python入门神图
  8. 转:Gulp使用指南
  9. 【.NetRemoting-2】2015.09.17
  10. eclipse没有(添加)"Dynamic Web Project"选项的方法【转载】
  11. Spring配置数据源的几种方法
  12. jQuery / zepto ajax 全局默认设置
  13. Java 由浅入深GUI编程实战练习(二)
  14. EF开发中EntityFramework在web.config中的配置问题
  15. jmeter联合selenium webdriver进行自动化测试-简单1
  16. 转载:2.2.2 配置项的语法格式《深入理解Nginx》(陶辉)
  17. third party sales process 继续说
  18. pom配置详解
  19. JavaScript callback function 回调函数的理解
  20. gson 设置多个别名SerializedName

热门文章

  1. 优化版小程序canvas,增加失败逻辑,及完善文字
  2. IDEA tomcat 热部署不生效的问题
  3. Java 实现 Http 请求工具类
  4. API接口设计:防参数篡改+防二次请求
  5. C语言中volatile的作用和使用方法
  6. 算法手记(2)Dijkstra双栈算术表达式求值算法
  7. jQuery事件委托
  8. spring cloud+.net core搭建微服务架构:服务发现(二)
  9. Postgresql操作json格式数据
  10. Spring Boot + Spring Cloud 实现权限管理系统 后端篇(二十一):服务网关(Zuul)