HTTP核心的两种请求方法GET/POST

2026-08-03 15:26:24 RAIZ

概括

GET和POST 是HTTP 最核心的两种请求方法,本质区别在于语义、数据传递方式与副作用;GET 用于安全幂等地查询获取资源,参数拼在URL上,POST 用于提交数据,参数放在请求体里,可能修改服务器状态。‌‌

语义用途

1.GET:查数据(查询、浏览、搜索),不修改服务器内容

2.POST:提交数据(登录、注册、发评论、上传),会改变服务器数据

简单记忆口诀

查用 GET,提交用 POST; 地址露数据用 GET,隐私/文件用 POST。


核心 7 点区别

  1. 数据位置‌:GET 参数附在 URL 后(如 ?id=123),POST 放在请求体(Request Body)中。

  2. 长度限制‌:GET 受 URL 长度限制(通常 2K–8K),POST 理论无上限(实际受服务器配置如 client_max_body_size 限制)。

  3. 安全性‌:GET 参数暴露在URL、浏览器历史、日志中,‌不适合传敏感信息‌;POST 更隐蔽但仍需 HTTPS 加密(二者本身均不“安全”)。

  4. 幂等性‌:GET ‌幂等‌(多次请求无副作用);POST ‌非幂等‌(重复提交可能创建多条资源,如重复下单)。

  5. 缓存与书签‌:GET 可被缓存、收藏为书签;POST 默认不缓存、不可书签。

  6. 编码支持‌:GET 仅 ASCII;POST 支持 application/jsonmultipart/form-data(含文件)等任意编码。

  7. 语义用途‌:GET 对应“读”(查询、搜索、加载页面);POST 对应“创”(提交表单、登录、上传、新增资源)。‌‌


典型场景‌:

·✅ ‌GET‌:搜索商品、加载文章、分页列表、获取用户资料(/api/users?id=123)、静态资源(CSS/JS/图片)。

·✅ ‌POST‌:用户登录/注册、提交评论、上传头像、创建订单、修改密码(‌绝不应通过 GET 传密码或 Token‌)。‌‌

⚠️ 注意:现代开发应遵循 RESTful 语义(GET=读、POST=创),并‌始终用 HTTPS‌处理敏感数据;“POST 更安全”是误区——真正安全靠加密(HTTPS),而非请求方法。

注:转载文章来源于网络,版权归原作者或企业所有,侵删!


我要咨询