做开发、学前端、刷面试题,GET 和 POST 是绕不开的基础。
但很多人学了很久,只记住一句话:GET 不安全,POST 安全。
真正项目里:什么时候用 GET?什么时候用 POST?参数藏在哪?能不能传文件?为什么刷新会重复提交?
今天这篇,通俗原理 + 场景总结 + 可直接运行代码,一次性彻底吃透 Form 表单两大提交方式。
一、一句话区分核心本质
记住这句万能准则,90% 的场景不会用错:
GET:只读,用来 “查数据”只是向服务器获取信息,不修改任何数据、没有副作用、刷新一万次结果都一样。
POST:提交,用来 “改数据”向服务器推送信息,用于新增、修改、保存数据,刷新可能重复提交。
通俗类比:
-
GET = 查成绩、翻帖子、搜商品(只看不变) -
POST = 改密码、发评论、提交注册(提交即变更) -
二、5 个最关键真实差异(工作 / 面试高频)
1. 参数位置:肉眼最直观区别
GET:参数拼在 URL 地址栏格式:
?name=xxx&pwd=xxx,浏览器地址、历史记录、书签全部看得见。POST:参数放在请求体 Body 里地址栏干干净净,普通用户看不到,需要抓包 / 开发者工具才能查看。
2. 安全性:破除最大误区
很多人以为 POST 加密了 ——其实没有!
-
GET:明文暴露,绝对不能放密码、手机号、身份证 -
POST:只是隐藏地址栏,未加密,抓包依然能看到
真正的安全只看 HTTP / HTTPS,和 GET、POST 无关。
3. 数据长度 & 文件上传
-
GET:URL 有长度限制,只能传短文本,不能传文件、图片 -
POST:无浏览器长度限制,所有文件上传一律只用 POST
4. 缓存与体验
-
GET 可缓存,搜索、列表页打开更快 -
POST 不缓存,每次都是全新请求,适合提交实时数据
5. 幂等性(面试必问)
-
GET 幂等:多次请求 = 一次请求,数据不变、无副作用 -
POST 不幂等:多次提交 = 多次生效(重复注册、重复下单) -
三、标准使用场景(直接背下来)
✅ 必须用 GET
-
搜索功能、条件筛选、分页 -
列表查询、详情页查看 -
分享链接、生成书签
✅ 必须用 POST
-
登录、注册、退出 -
提交表单、修改资料 -
上传图片、文件、视频 -
支付、订单提交 -
四、手把手实操:可直接运行完整代码
给大家两段极简原生 HTML 代码,新建记事本改后缀为 .html 即可直接打开测试。
1、GET 表单示例(搜索类)
<html lang="zh-CN"><head><meta charset="UTF-8"><title>GET表单演示</title></head><body><h3>GET提交演示(参数显示在地址栏)</h3><!-- action填写接口地址,这里用#代表当前页面,能清晰看到拼接参数 --><form action="#" method="get">用户名:<input type="text" name="username" placeholder="请输入名称"><br><br>搜索关键词:<input type="text" name="key" placeholder="输入搜索词"><br><br><button type="submit">GET方式提交查询</button></form></body></html>
xxx.html?username=xxx&key=xxx,参数完全暴露。
<html lang="zh-CN"><head><meta charset="UTF-8"><title>POST表单演示</title></head><body><h3>POST提交演示(参数隐藏在请求体)</h3><form action="#" method="post">账号:<input type="text" name="account"><br><br>密码:<input type="password" name="pwd"><br><br><button type="submit">POST登录提交</button></form></body></html>
提交后现象地址栏无任何参数,数据全部在请求体传输,适合敏感信息。
查看 POST 数据的方法(新手必学)
-
1.页面按 F12打开开发者工具 -
2.切换到 Network -
3.勾选 Preserve log,提交表单 -
4.找到对应请求,查看 Payload/请求体即可看到提交内容 -
五、开发 & 面试高频:幂等性与使用规范
这是进阶开发和面试必考的知识点,也是区分新手和熟手的关键:
什么是幂等性?
简单说:相同请求执行多次,结果和执行一次完全一致。
-
GET 是幂等操作:多次查询同一数据,结果一模一样,不会产生任何副作用; -
POST 是非幂等操作:多次提交相同数据,会多次生效(比如连续点注册,生成多个相同账号)。 -
行业强制使用规范(开发必遵守)
-
-
所有查询、检索、浏览类操作,统一用 GET; -
所有新增、修改、删除、提交、上传类操作,统一用 POST; -
敏感信息(密码、验证码、隐私资料)严禁使用 GET; -
但凡涉及文件上传,只能使用 POST。
-
-
六、极简终版对照表(收藏备用)
|
|
|
|
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
写在最后
GET 和 POST 没有谁高级谁低级,只有场景合不合适。
记住一条万能公式:查用 GET、写用 POST;明文用 GET、敏感用 POST、上传只用 POST。
这是前后端交互、接口测试、网络安全、面试基础的重中之重,吃透这篇,彻底告别模糊认知!

