HTTP中GET和POST的区别是什么?

HTTP定义:

GET:用于获取资源,通常用于请求数据而不改变服务器的状态

POST:用于提交数据到服务器,通常会改变服务器的状态或产生副作用(如创建或更新资源)

参数传递方式:

GET:参数通过URL拼接传递,暴露在请求URL中,具有可见性,长度有限(取决于浏览器和服务器,默认2048字节)

POST:参数放在请求体中,参数不可见,且理论上长度没有限制(实际上服务器有配置限制,如Nginx默认限制1MB),更适合传输大量或敏感的信息(POST请求也可以在URL上放参数)

安全性:

GET:参数可见,数据容易暴露在浏览器历史记录、日志和缓存中,不适合传递敏感信息。

POST:数据放在请求体中相对安全,适用HTTPS能保证数据加密传输

幂等性:

GET:幂等(重复请求不会改变服务器状态)

POST:非幂等(多次请求可能导致重复创建资源或执行多次相同操作)

TCP数据包:

GET:产生一个TCP数据包

POST:产生两个TCP数据包

对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据)

而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)

也就是说,GET只需要汽车跑一趟就把货送到了,而POST得跑两趟,第一趟,先去和服务器打个招呼"嗨,我等下要送一批货来,你们打开门迎接我",然后再回头把货送过去。

相关推荐
广州灵眸科技有限公司10 小时前
瑞芯微(EASY EAI)RV1126B openclaw部署接入飞书
linux·网络·人工智能·算法·yolo·飞书
idjoy11 小时前
网络原因导致gitee推送不上 提示没有权限或没有库
网络·gitee
骆驼102411 小时前
eNSP 与物理网络互通:从 ICS 到 Windows 路由转发的完整记录
网络·ensp·实验环境连通
笨笨饿11 小时前
80_聊聊SPI以及它们的变体
linux·c语言·网络·stm32·单片机·算法·个人开发
ITyunwei098711 小时前
数字化转型与遗留系统:如何为老旧的IT系统“减负“并注入新活力?
运维·网络·数据库
xhbh66612 小时前
从零实现Linux软路由:报文转发配置+静态路由+NAT实战
网络·端口转发·流量端口转发·ssh端口转发·端口转发工具
wangl_9212 小时前
Modbus RTU 与 Modbus TCP 深入指南-决策树与选型建议
网络·网络协议·tcp/ip·tcp·modbus·rtu
xhbh66612 小时前
Windows自带端口转发完全教程:netsh命令详解与实战案例
网络·端口转发·流量端口转发·ssh端口转发·端口转发工具
暴力求解12 小时前
Linux---网络基础概念
linux·运维·服务器·网络·操作系统
Simon5231412 小时前
常见404 500错误解析
网络·学习·servlet·html5