get和post的区别
- GET和POST长度的限制问题
GET:
1、GET是通过URL提交数据,因此GET可提交的数据量就跟URL所能达到的最大长度有直接关系
2、实际上HTTP协议对URL长度是没有限制的;限制URL长度大多数是浏览器或者服务器的配置参数
POST:
1、同样的,HTTP协议没有对POST进行任何限制,一般是受服务器配置限制或者内存大小
2、PHP下可以修改php.conf的postmaxsize来设置POST的大小
-
GET和POST的安全性
1、GET是通过URL方式请求,可以直接看到,明文传输
2、POST是通过请求header请求,可以开发者工具或者抓包可以看到,同样也是明文的
3、GET请求会保存在浏览器历史纪录中,还可能会保存在Web的日志中
-
GET幂等/POST不幂等
幂等是指同一个请求方法执行多次和仅执行一次的效果完全相同。
- GET后退按钮/刷新无害,POST数据会被重新提交(浏览器应该告知用户数据会被重新提交)。
- GET书签可收藏,POST为书签不可收藏。 (???)
- GET能被缓存,POST不能缓存 。 (get相当于查询,缓存有效果;post相当于增删改,每次的数据不一样,缓存没有作用)
- GET编码类型application/x-www-form-url,POST编码类型encodedapplication/x-www-form-urlencoded 或 multipart/form-data。为二进制数据使用多重编码。
- GET历史参数保留在浏览器历史中。POST参数不会保存在浏览器历史中。 (???)
- GET对数据长度有限制,当发送数据时,GET 方法向 URL 添加数据;URL 的长度是受限制的(URL 的最大长度是 2048 个字符)。POST无限制。
- GET只允许 ASCII 字符。POST没有限制。也允许二进制数据。
- 与 POST 相比,GET 的安全性较差,因为所发送的数据是 URL 的一部分。在发送密码或其他敏感信息时绝不要使用 GET !POST 比 GET 更安全,因为参数不会被保存在浏览器历史或 web 服务器日志中。
- GET的数据在 URL 中对所有人都是可见的。POST的数据不会显示在 URL 中。