HTTP中,GET和POST的区别

从 HTTP 规范的语义来看,GET 用于获取资源,不应该改变服务器状态;POST 用于提交数据,通常会产生副作用,比如创建或更新资源。

不过在实际应用中,因为浏览器和服务器的实现,两者有一些明显的差异:

1)参数传递方式不同:GET 把参数拼在 URL 上,长度受浏览器和服务器限制,一般在 2KB 左右。POST 把参数放在请求体里,理论上没有大小限制,更适合传大块数据。当然 POST 也能在 URL 上带参数,只是不常见。

2)安全性有区别:GET 的参数直接暴露在 URL 里,会被浏览器历史记录、服务器日志、代理缓存记下来,不适合传密码这类敏感信息。POST 把数据藏在请求体里,看起来安全一点,但本质上还是明文,真要安全得靠 HTTPS。

3)幂等性不同:按规范 GET 是幂等的,同一个请求发 10 遍结果都一样;POST 不是幂等的,发 10 遍可能创建 10 条数据。但实际开发中,有人拿 GET 搞提交、拿 POST 搞查询,那就得具体看代码逻辑了。

4)缓存机制不同:GET 请求能被浏览器和 CDN 缓存,适合图片、静态页面这类不常变的资源。POST 请求默认不缓存,每次都会打到服务器。

相关推荐
国科安芯1 小时前
从遥控到自治:ASP4644S2B支撑星载电源健康管理与容错配电
网络·单片机·嵌入式硬件·安全·dcdc·低轨卫星·商业航天
|_⊙3 小时前
网络层协议 IP
服务器·网络·tcp/ip
无言听风雨丶4 小时前
Kubernetes Service Mesh 与 mTLS 实战:从网络可达走向零信任服务通信
网络·kubernetes·service_mesh
叼烟扛炮4 小时前
Linux 学习笔记(六十):单线程的逆袭——epoll 高并发服务器实战
linux·服务器·网络·笔记·学习·算法
沫璃染墨6 小时前
从零入门计算机网络系列(十五):TCP可靠传输机制详解——从序号与确认应答到乱序处理
服务器·网络·c++·tcp/ip·tcp
xiaoye-duck7 小时前
《C++ 项目:手写大模型接入 SDK》本地 Ollama 部署与适配
开发语言·网络·c++·语言模型
叼烟扛炮8 小时前
Linux 学习笔记(六十一):网络编程毕业设计——Reactor 反应堆模式
linux·网络·笔记·学习·课程设计
2401_868534788 小时前
【网络安全
网络·python
xyzzklk8 小时前
变相解决华为Mate 8锁屏后无法建立入站网络连接
linux·运维·服务器·网络·华为·go·安卓
叼烟扛炮10 小时前
Linux 学习笔记(五十九):epoll 的生死抉择——LT 与 ET 模式
linux·运维·服务器·网络·笔记·学习·php