1、首先,要清楚这个问题是基于什么前提的,如果什么前提都没有,不适用任何规范,只考虑语法和理论上的HTTP协议,GET和POST请求没有区别。
2、如果是基于RFC规范的
(1)理论上的(Specification):GET和POST 具有相同的语法,但是有不同的语义。get是用来获取数据的,post是用来发送数据的,其他方面没有任何区别。
(2)实现上的(Implementation):
常见的不同:
1)GET的数据在URL是可见 ,POST不显示在URL中。GET请求的数据以 ?aname=xxx 的形式跟在URL后,放在请求头里。(aname是需要传递的参数)
2)Get对长度是有限制的,post对长度无限制
3)Get请求的数据可以收藏为书签,POST请求的数据不可以
4)GET请求后,按后退按钮、刷新按钮无影响,但是POST请求后,刷新或退后按钮,数据会被重新提交
5)GET编码类型: application/x-www-form-url;
POST编码类型有很多种:encodeapplication/x-www-form-urlencoded multipart/form-data
6)GET历史参数会被保留在浏览器中,POST请求不会保存在浏览器中
7)Get只允许ASCII,post没有编码限制,允许发二进制
8)GET与POST相比,GET的安全性较差,因为所发的数据时URL的一部分,能够被看见。