get&&post的区别

get&&post

因为get和post都是基于tcp协议实现的,所以其根本没有很大区别。
经典的比喻:
Tcp就像汽车,我们用TCP来运输数据。但是为了突出和区别这些汽车(如送急件的),就有了交通规则http。
HTTP给汽车运输设定了好几个服务类别,有GET, POST, PUT, DELETE等等。
当执行GET请求的时候,要给汽车贴上GET的标签(设置method为GET),而且要求把传送的数据放在车顶上(url中)以方便记录。
如果是POST请求,就要在车上贴上POST的标签,并把货物放在车厢里。
当然,你也可以在GET的时候往车厢内偷偷藏点货物,但是这是很不光彩;也可以在POST的时候在车顶上也放一些数据。
** 所以说,HTTP只是个行为准则,而TCP才是GET和POST怎么实现的基本。**

1.安全性

get用url传输数据,post用body传输数据,所以,我们常常认为get传输是不够安全的。
但其实,http是通过明文传输的,所以如果是对于安全性有较高的要求,最好还是使用https实现端端加密传输。

2.缓存机制

get会被浏览器主动缓存,而post不会,除非手动设置。
原因是post往往是发起请求让服务器做一件事,这件事往往是有副作用的,不幂等的。
所以post请求往往不能随意多次执行,因此不要随意缓存。
幂等性:就是用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生了副作用。

3.编码方式

get是querystring(仅支持urlencode编码),而post是放在body(支持多种编码)。
所以其实是 http中url用什么编码 和 body用什么编码。

4.保留历史记录,收藏书签

GET可以,而POST不能

5.长度限制

get最多1024kb(http协议中对url长度无限制,是浏览器以及服务器对它的限制),
post默认为无限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。

6.GET在浏览器回退时是无害的,而POST会再次提交请求。

不太正确的一点
Tcp包
GET产生一个TCP数据包;POST产生两个TCP数据包(Firefox只发送一次)。
参考链接:https://zhuanlan.zhihu.com/p/25028045

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容