没有什么是汉语不能解释的
就像翻译中所说的一样
GET - 从指定的资源请求数据;重点是得。
POST - 向指定的资源提交要被处理的数据;重点是给。
传递数据大小:
GET - HTTP协议并没有硬性限制,而是与浏览器、服务器、操作系统有关。长度限制只是限制的是整个URI长度,而不是参数值数据长度,就是.length和内存的区别
IE:对URL的最大限制为2083个字符,若超出这个数字,提交按钮没有任何反应。
Firefox:对URL的最大限制长度限制为:65536个字符。
Safari:对URL的最大限制长度限制为:80000个字符。
Opera:对URL的最大限制长度限制为:190000个字符。
Google(chrome):对URL的最大限制长度限制为:8182个字符。
POST - 理论上讲,post是没有大小限制的。Http协议规范也没有进行大小限制,起限制作用的是服务器处理程序的处理能力。
结论:GET请求参数有长度限制;POST请求参数也是长度限制的。 一般情况下,两者使用都没问题
传递值的方式:
GET - 基于请求头传递数据,以字符串的形式拼接到地址后边。例如:
http://xxx.com/aaa/bbb?id="1111"&name="mmkk"
POST - 基于请求体传递数据,以JSON形式把信息传递给服务器。
结论:从开发和可读性方面来说,推荐大量参数的还是用POST
安全性:
GET - 请求能够被cache,GET请求能够被保存在浏览器的浏览历史里面,通过查看记录会一目了然的发现传递的数据信息
POST - 不进行缓存
结论:表面上看GET请求相对POST请求来说不太安全,但是深层次来说GET是幂等的,在这一点上,GET被认为是安全的。
回到开头的图片,有没有觉得体会到什么?GET是得到,请求的参数可以做加密。POST是传入/写入,谁知道会给服务器传些啥?总觉得POST危险性高一些
- GET在浏览器回退时是无害的,而POST会再次提交请求。
- GET产生的URL地址可以被Bookmark,而POST不可以。
- GET请求会被浏览器主动cache,而POST不会,除非手动设置。
- GET请求只能进行url编码,而POST支持多种编码方式。
- GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。
- GET请求在URL中传送的参数是有长度限制的,而POST么有。
- 对参数的数据类型,GET只接受ASCII字符,而POST没有限制。
- GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。
- GET参数通过URL传递,POST放在Request body中