get 传送的数据长度有限制,因为是放在url中传递参数,如果传递中文参数,需要自己进行编码操作,安全性较低。
适用场景: get一般用于简单的数据查询,只是查询获取数据时可以用GET,严格要求不是那么高的场景。
post 是放在请求体中,没有限制。【如果服务器做了限制另说,可更改】。
适用场景:post一般用于数据提交,在传递一些机密信息时必须要使用POST
区别:
(1)GET请求资源数据,POST向服务器传递需要处理的数据
(2)GET传递数据大小不超过2kb,POST没有限制
(3)GET请求的参数会在Url上暴露显示,POST请求参数在Requestbody里,所以相对GET来说,POST安全性较高
(4)GET 请求的静态资源会被浏览器缓存,POST不会被缓存
(5)GET传递的数据类型是文本,POST是文本或者二进制
(6)GET请求被回退时是无害的,POST请求被回退是会被重新再执行一次
分类 | GET | POST |
---|---|---|
后退按钮/刷新 | 无害 | 数据会被重新提交(浏览器应该告知用户数据会被重新提交)。 |
书签 | 可收藏为书签 | 不可收藏为书签 |
缓存 | 能被缓存 | 不能缓存 |
编码类型 | application/x-www-form-urlencoded | application/x-www-form-urlencoded 或 multipart/form-data。为二进制数据使用多重编码。 |
历史 | 参数保留在浏览器历史中。 | 参数不会保存在浏览器历史中。 |
对数据长度的限制 | 是的。当发送数据时,GET 方法向 URL 添加数据;URL 的长度是受限制的(URL 的最大长度是 2048 个字符)。 | 无限制。 |
对数据类型的限制 | 只允许 ASCII 字符。 | 没有限制。也允许二进制数据。 |
安全性 | 与 POST 相比,GET 的安全性较差,因为所发送的数据是 URL 的一部分。在发送密码或其他敏感信息时绝不要使用 GET ! | POST 比 GET 更安全,因为参数不会被保存在浏览器历史或 web 服务器日志中。 |
可见性 | 数据在 URL 中对所有人都是可见的。 | 数据不会显示在 URL 中。 |