HTTP 协议的基本格式
HTTP 协议的基本格式HTTP超文本传输协议是基于请求 - 响应模型的应用层协议所有通信都由客户端发起请求、服务器返回响应完成。HTTP 请求和响应报文结构高度相似均由四部分组成起始行、请求 / 响应头、空行、报文主体。1. HTTP 请求报文格式一个完整的 HTTP 请求由以下四部分构成表格组成部分说明示例请求行格式请求方法 资源路径 HTTP版本GET /index.html HTTP/1.1请求头键值对形式传递客户端元数据Host: www.example.com、User-Agent: Mozilla/5.0空行分隔请求头与请求体必须存在CRLF即回车换行请求体可选POST/PUT 等方法传递的参数数据usernameadminpassword123常见请求方法❌ 误区“POST 绝对安全”✅ 真相POST 的参数只是不在地址栏显示但默认还是明文传输的想要真正安全必须搭配 HTTPS。四、一句话总结三、常见误区澄清❌ 误区“GET 比 POST 快”✅ 真相两者本质都是 TCP 请求GET 只是因为参数在 URL、数据量小所以看起来更快性能差异可以忽略不计。GET获取资源参数拼接在 URL 中POST提交数据参数放在请求体中PUT更新资源DELETE删除资源2. HTTP 响应报文格式服务器返回的响应报文同样由四部分构成表格组成部分说明示例状态行格式HTTP版本 状态码 状态描述HTTP/1.1 200 OK响应头键值对形式传递服务器元数据Content-Type: text/html、Set-Cookie: sessionidxxx空行分隔响应头与响应体必须存在CRLF响应体服务器返回的实际数据HTML 页面、JSON 数据、图片等常见状态码200请求成功301/302资源重定向404资源不存在500服务器内部错误GET VS POST一、核心区别对比表表格对比维度GETPOST用途主要用于获取 / 查询数据是幂等操作主要用于提交 / 修改数据不是幂等操作数据传递方式参数拼接在URL 地址栏中?keyvalue参数放在 **HTTP 请求体Body** 中数据长度限制浏览器 / 服务器对 URL 长度有限制通常 2KB~8KB不适合传大数据理论上无长度限制可传输大量数据如文件、表单安全性参数明文暴露在地址栏、历史记录中不适合传敏感信息参数在请求体中地址栏看不到安全性更高但本身不加密仍需 HTTPS浏览器缓存可被浏览器缓存也会保留在历史记录中默认不会被缓存也不会保留在历史记录中书签 / 收藏可以直接收藏为书签不能被收藏编码方式只能使用 URL 编码支持多种编码方式如 application/x-www-form-urlencoded、multipart/form-data、JSON 等二、关键细节拆解幂等性IdempotencyGET多次调用同一个 GET 请求对服务器的结果没有任何改变比如多次刷新查询列表数据不会被修改这就是幂等。POST多次提交同一个 POST 请求可能会重复创建数据比如重复提交订单不是幂等操作。数据位置的影响GET 的参数在 URL 里会被浏览器历史记录保存服务器日志记录代理服务器记录所以传密码、手机号这类敏感数据时绝对不能用 GET。POST 的参数在请求体里这些地方都看不到更安全。表单提交的场景差异HTML 表单默认的提交方式是 GET适合简单的查询表单。当表单里有文件上传时必须用 POST因为 GET 无法携带文件数据。浏览器的行为差异刷新页面时GET 请求会直接重新加载POST 请求会提示 “确认重新提交表单”。按浏览器的后退 / 前进按钮GET 请求可以正常返回POST 请求可能会丢失数据。用 GET查询、获取数据比如看文章、搜列表、查信息。用 POST提交、修改数据比如登录、注册、发帖子、上传文件。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2570051.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!