http中get和post的区别

本文聚焦于HTTP中GET和POST请求的异同。本质上二者都是HTTP请求、TCP连接。不同点在于,参数方面,GET参数在URL,POST在请求体;回退时,GET无害,POST会再次提交表单;缓存上,GET可缓存,POST不行;请求包上,GET发一个,POST发两个。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

导语

get和post的区别是面试中经常会被问到的问题。

那么同样作为http请求,他们之间究竟有什么异同呢?

相同点

从本质上讲,get和post都是http请求,都是tcp连接,是无区别的。

不同点

关于参数

考虑参数的位置:get请求的参数位于url中,而post请求的参数位于request body中。
这导致了三个问题,
一是get请求的安全性不如post请求;
二是get的参数有长度限制,而post没有;
三是get的参数只允许ASCII字符,post没有限制。

关于回退

点击回退或刷新时,post请求会再次提交表单,而get请求不会。
所以post是回退有害的,get回退无害。

关于缓存

get能被缓存,可以收藏为书签,参数保留在浏览器历史中;
post不能被缓存,不可收藏为书签,参数不会保留在浏览器历史中。

关于请求包

get请求只发送一个tcp数据包,即http header和data共同发送给web服务器,服务器响应200 OK.
post请求发送两个tcp数据包,第一次发送http header,如果web服务器予以响应100 continue,则发送第二个数据包data,服务器响应200 OK.

对比总结

getpost
参数位置url中request body
参数长度有限制无限制
参数编码ASCII编码无限制
后退/刷新不重复提交,回退无害重复提交,回退有害
安全性参数暴露,不安全安全
缓存可以缓存不可以缓存
书签可以收藏为书签不可收藏为书签
历史参数保留在浏览器历史不保留在浏览器历史
请求包个数1个 http header+data两个 先http header,再data
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值