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 请求默认不缓存,每次都会打到服务器。

相关推荐
zero_703216 小时前
HCIP 课程文字版思维导图笔记
服务器·网络·php
NeilYuen17 小时前
实现TCP发送HTTP请求
网络协议·tcp/ip·http
天启HTTP18 小时前
爬虫频繁弹验证码?解析网站反爬检测机制
网络·爬虫·tcp/ip
jufeng130718 小时前
【系列:MiniKV 原理剖析 · 第 5 篇】
linux·网络·c++·软件工程
ARoger_miu5719 小时前
opsf笔记
网络·网络协议
caimouse19 小时前
tcpip.sys 网络层 (IP) 详细分析
网络·网络协议·tcp/ip
草莓熊Lotso20 小时前
【Linux网络】从0手写Reactor反应堆(二):完善核心细节——ET非阻塞读写、分层架构与回调机制
linux·运维·服务器·网络·c++·tcp/ip·架构
驱动探索者20 小时前
RISC-V 指令集深度解析:从 ISA 到 Zephyr
网络·计算机·操作系统·os
wuhuhuan20 小时前
Day17:HTTP 接口测试与链式调用 — sendRequest 从入门到实战
网络·网络协议·http
showyoui20 小时前
K8s 集群迁移踩坑:Istio 升级后 nginx 403
网络·docker·kubernetes·istio·service_mesh