目录
在 Web 开发中,GET 和 POST 是两种常见的数据提交方式,它们之间存在着一些区别。
一、数据位置
- GET:将请求数据放在 URL 上,以问号分割 URL 和传输的数据,多个参数之间以 “&” 符相连。例如,访问
3w 点和天 level.com
,搜索内容为 “circle”,URL 变为3w 点和天 level.com?wk=circle
。 - POST:把数据放在 HTTP 数据包里面,也就是 request body 中。通过靶场示例,使用 BP 抓包可以看到,提交数据如 “username=rear&password=real123” 在请求体中,而 URL 里不会显示提交数据。
二、用途
- GET:一般情况下用来获取数据。
- POST:一般用于修改数据。
三、数据大小限制
- GET:提交数据最大为 2K,但实际上其限制取决于不同浏览器,最大大小可能不一样。
- POST:理论上没有限制。
四、TCP 数据包数量
- GET:只产生一个 TCP 数据包,浏览器会把 HTTP 的头和数据一并发出,服务器响应 200 表示返回数据。
- POST:产生两个 TCP 数据包。首先浏览器先发送 head 头,服务器响应 100 表示 continue(继续),然后浏览器再发送数据,服务器响应 200 表示 ok 并返回数据。
五、缓存机制
- GET:会被浏览器主动缓存。例如,访问某个页面后再次访问,可能会自动补全之前访问过的参数,这是因为被缓存了。
- POST:不会被浏览器主动缓存,除非手动设置。
综上所述,GET 和 POST 在数据位置、用途、数据大小限制、TCP 数据包数量和缓存机制等方面存在明显区别,在实际开发中应根据具体需求选择合适的提交方式。