Get请求与Post请求区别:
1. 后退按钮/刷新:无害丨数据会被重新提交
2. 书签:可以收藏为书签丨不可以收藏为书签
3. 缓存:能被缓存(读取数据,并不会改变数据,因此可以被缓存)丨不能被缓存(提交数据,多次提交不同数据,会改变数据,缓存就没有什么意义)
4. 参数数据类型:ASCII丨整个ISO10646,也允许二进制数据
5. 历史:参数保存在浏览器历史中丨不保存
6. 参数数据量大小:小(取决于浏览器)丨大
7. 编码类型:application/x-www-form-urlencoded丨application/x-www-form-urlencoded或multipart/form-data。为二进制数据使用多重编码
8. 安全性:参数放在透明的URL中,因此较差较差丨参数不会被保存在浏览器历史或服务器日志中,因此较好(其实并不严谨,抓包也可以很容易看到POST请求中的请求报文)
9. 传输的信息在http中的位置:请求头丨请求体(此处并不做严格区分,get请求也能将参数放置请求体,但某些浏览器不支持这样操作,post也可将参数放置请求头)
10. 安全幂等丨非安全非幂等
(安全:该操作用于“获取信息”而非操作信息
幂等:对同一URL的多次请求返回结果相同
)
部分细节可以再参考一下:
【GET 和 POST 的区别_Marck的博客-CSDN博客_get和post的区别】https://blog.csdn.net/qq_38182125/article/details/89071899
get请求一般是用于信息获取,使用url传递参数,对于发送的信息长度有限制,一般为2k;请求的参数只能是ASCII码/url编码。
post请求一般用来修改服务器上的资源,对请求长度没有限制,请求的参数也没有编码限制
get请求的参数一般是放在url里的,post一般是放在请求体里。(post也可以放在url上,只是使用习惯,不能算真的区别)
get请求浏览器将http header data一起发送到服务器,之后返回200和数据,产生一个tcp数据包
post,浏览器先发送header,服务器响应100,在发送data,服务器响应200和返回的数据,产生两个tcp数据包。(firefox又不一样,似乎是一个)