Get与Post的区别
1.数据传输上
Get把参数包含在URL中
Post通过request body传递参数。
2.url的可见性
Get的url参数是可见的
Post的url参数是不可见的
3.缓存性
Get能被缓存。
Post不能被缓存
4.书签
Get可收藏书签
Post不可收藏书签
5.对数据长度的限制
Get是存在限制的。当发送数据时,Get向url添加数据时,url的长度是受限的。(URL最大长度是2048)
Post无限制
6.对数据类型的限制
Get只允许ASCII字符
Post没有限制
7.安全性
Get与Post相比,Get安全性差,因为所发送的部分是url的一部分,在发送密码以及敏感信息时绝对不要使用Get。
Post更安全的原因是参数不会被保存在浏览器历史或者web服务器日志中。
但两者从传输角度而言都是不安全的,在http传输中存在被抓包的风险,抓包后能获取数据报文,可以尝试加密的情况下进行安全传输。
8.数据包
GET产生一个TCP数据包;POST产生两个TCP数据包。对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。在网络环境好的情况下,发一次包的时间和发两次包的时间差别基本可以无视。而在网络环境差的情况下,两次包的TCP在验证数据包完整性上,有非常大的优点。并不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次。
9.后退页面的反应
get请求页面后退时,不产生影响
post请求页面后退时,会重新提交请求
10.传输数据的大小
get一般传输数据大小不超过2k-4k(根据浏览器不同,限制不一样,但相差不大)
post请求传输数据的大小根据php.ini 配置文件设定,也可以无限大。
原文链接:https://blog.csdn.net/qq_38889350/article/details/112187977