get和post的区别

对比维度 GET 请求 POST 请求
核心语义 / 用途 用于从服务器获取数据(查询、读取),是「只读操作」,不改变服务器数据状态 用于向服务器提交数据(创建、修改、删除),是「写操作」,会改变服务器数据状态
数据传输方式 数据附加在 URL 末尾,以查询字符串(?key1=value1&key2=value2)的形式传递 数据放在 请求体(Request Body) 中传递,URL 中不可见
URL 可见性 数据暴露在 URL 中,可被浏览器历史、书签、代理服务器记录 数据隐藏在请求体中,URL 中不显示,相对更隐蔽
数据大小限制 无官方 HTTP 协议限制,但受浏览器 / 服务器对 URL 长度的限制(通常几 KB,如 Chrome 限制 2KB 左右) 无严格限制(仅受服务器配置影响,如 Tomcat 默认可接收几 MB),支持传输大量数据
数据类型限制 仅支持ASCII 字符,无法直接传输二进制数据(如文件、图片),需进行 URL 编码 支持传输任意类型数据(ASCII、二进制、JSON、表单等),可直接传输文件,无需额外编码(或仅需简单编码)
安全性(相对概念) 「不安全」:数据暴露在 URL 中,易被窃听、截取、篡改,不适合传输敏感数据(如密码、身份证) 「相对更安全」:数据在请求体中,不易被直接获取(但未加密的 POST 数据仍可通过抓包工具捕获,敏感数据需配合 HTTPS)
浏览器缓存 / 历史 可被浏览器缓存,请求参数会被记录在浏览器历史记录中 默认不被浏览器缓存,请求参数不会记录在历史记录中
幂等性 具有幂等性(多次发送相同请求,服务器返回结果一致,且不会对服务器数据产生额外影响),如查询快递、查询天气 通常不具备幂等性(多次发送相同请求,可能会产生重复操作),如提交订单、注册账号、上传文件
书签 / 收藏 可被收藏为浏览器书签(URL 包含完整请求参数) 不可被收藏为书签(请求参数在请求体中,书签无法保存)
posted @ 2025-12-28 14:54  不承认我  阅读(4)  评论(0)    收藏  举报