安全性
POST 比 GET 安全,因为数据在地址栏上不可见。
然而,从传输的角度来说,他们都是不安全的,因为 HTTP 在网络上是明文传输的,只要在网络节点上捉包,就能完整地获取数据报文。
要想安全传输,就只有加密,也就是 HTTPS。
长度
当发送数据时,GET 方法向 URL 添加数据;URL 的长度是受限制的(URL 的最大长度是 2048 个字符)。
post方法无限制
编码类型
GET:
application/x-www-form-urlencoded
POST:
application/x-www-form-urlencoded 或 multipart/form-data。为二进制数据使用多重编码。
其他区别
刷新或者后退时,post方法会把数据重新提交,get不会
get可以缓存,可以收藏为书签;post不能收藏为书签,也不可以缓存。
对数据类型的限制:get只允许 ASCII 字符,post允许包括二进制在内的数据类型。
get参数会被保存在浏览器历史,post的则不会,post的数据也不会被保存在Web服务器日志中。
POST 方法会产生两个TCP数据包?
有些文章中提到,post 会将 header 和 body 分开发送,先发送 header,服务端返回 100 状态码再发送 body。
HTTP 协议中没有明确说明 POST 会产生两个 TCP 数据包,而且实际测试(Chrome)发现,header 和 body 不会分开发送。
所以,header 和 body 分开发送是部分浏览器或框架的请求方法,不属于 post 必然行为。
参考:https://www.cnblogs.com/liliuguang/p/10416267.html