1.是基于什么前提的?
如果什么前提都没有,不使用任何规范,只考虑语法和理论上的Http协议。Get和Post几乎没有什么区别,只有名字不一样。
2.如果是基于RFC规范的。
1)理论上的(Specifiction):Get和Post具有相同的语法的,但是有不同的语义。
get是用来获取数据的,post是用来发送数据的,其他方面没有区别。
2)实现上的(Implwmentation): 各种浏览器就是这个规范的实现者。
常见的那些不同:
- Get的数据在url是可见的。Post的请求不显示在url中。
- Get请求对传参的长度是有限制的,Post请求长度是无限的。
- Get请求的数据可以收藏为书签,Post请求到的数据不可以被收藏为书签。
- Get请求后,按后退按钮、刷新按钮无影响,Post数据会被重新提交。
- Get编码类型:application/x-www-form-url,Post的编码类型:有很多种。
encodeapplication/x-www-form-urlencoded
multipart/form-data 只有Post方式可以发送文件 - Get历史参数会被保存在浏览器里,Post不会保存在浏览器中。
- Get只允许ASCII,Post没有编码限制,允许发二进制的。
- Get与Post相比,Get安全性较差,因为所发的数据是URL的一部分。
总的来说,Get和Post本质上没有任何区别,只是浏览器对Get和Post做了不同的处理。