HTTP 请求响应前置知识
1188 字
6 分钟
HTTP 请求响应前置知识
必备的 Web 交互 HTTP 请求响应前置知识,例如:Content-Type 等
目录:
一、HTTP 基础前置(Web 交互必备)
1. 请求整体结构
响应结构:
二、最核心请求头(必背)
1. Content-Type(重中之重)
作用:告诉服务器请求体的数据格式。
常用 4 种格式
| 值 | 数据格式 | 适用场景 |
|---|---|---|
application/x-www-form-urlencoded | 键值对,key=value&a=1 | 普通表单 POST,无文件 |
multipart/form-data | 二进制分段数据 | 上传文件、图片 |
application/json | JSON 字符串 {"name":"xxx"} | Ajax、前后端分离接口(90% 接口都用它) |
text/plain | 纯文本 | 简单字符串传递 |
注意:GET 请求没有请求体,不需要 Content-Type。
2. Accept
告诉客户端想要接收什么格式的响应
Accept: application/json,text/html,*/*3. Authorization / Token
身份凭证
Authorization: Bearer eyJhbGci...4. Cookie
浏览器自动携带,会话凭证
Cookie: sessionid=xxx; token=xxx5. Referer
来源页面,防盗链校验使用
6. User-Agent
客户端浏览器 / 设备信息,用来区分移动端、PC 端、爬虫。
7. Origin
跨域请求才会自动带上,代表请求源域名。
三、响应头高频字段
Content-Type告诉客户端返回的数据类型:
Content-Type: application/jsonContent-Type: text/html;charset=utf-8Content-Type: image/png字符集 charset=utf-8 解决中文乱码。
Access-Control-Allow-Origin跨域 CORS 核心配置,允许前端域名访问接口。Location302 重定向地址。Content-Length响应体字节长度。
四、HTTP 请求方法(Web 交互必懂)
- GET 获取资源,参数放在 URL 问号后面,无请求体,可缓存。
- POST 提交数据,带 Body,用于新增、提交表单、传 JSON。
- PUT 全量更新资源
- PATCH 局部更新
- DELETE 删除资源
- OPTIONS 预检请求(跨域时浏览器先发 OPTIONS)
五、状态码极简速记
2xx 成功
- 200 OK 正常返回
- 201 Created 创建成功
3xx 重定向
- 302 临时跳转
- 304 资源未修改,走浏览器缓存
4xx 客户端错误
- 400 参数错误
- 401 未登录 / 无令牌
- 403 权限不足
- 404 接口不存在
- 405 请求方法不允许(POST 写成 GET)
- 415 不支持的媒体类型 → 绝大多数是Content-Type 写错
5xx 服务端错误
- 500 服务器代码异常
- 503 服务不可用
六、前后端交互高频踩坑点
- 前端传 JSON,但是没写
Content-Type: application/json→ 后端接收不到参数,报 415。 - 表单传文件必须用
multipart/form-data,不能用 json。 - GET 不能带 Body,很多后端框架会直接丢弃 GET 请求体数据。
- 跨域问题本质:浏览器同源策略,依靠后端配置
Access-Control-Allow-Origin。 - 中文乱码:请求头、响应头统一加上
charset=utf-8。
七、典型请求示例(JSON 接口标准格式)
POST /api/user/login HTTP/1.1
{"username":"admin","password":"123456"}GET+POST核心区别
1. 数据存放位置(最关键)
-
GET 参数拼在 URL 地址栏(Query 查询字符串) 例:
/list?page=1&name=admin没有请求体(Body)。 -
POST 数据放在请求体 Body 里,不会出现在网址上。 可以传表单、JSON、文件等。
2. 数据大小限制
- GET:受 URL 长度限制,一般几 KB,不能传大量数据。
- POST:理论无上限,适合传递大文本、文件、JSON 对象。
3. 安全性
- GET:参数明文暴露在浏览器地址栏、历史记录、日志里,不能用来传密码、令牌。
- POST:数据在请求体内,地址看不到,更适合账号密码提交。
4. 缓存与书签
- GET:浏览器会自动缓存、可以收藏为书签,重复请求会走缓存。
- POST:浏览器默认不缓存,一般不能保存成书签。
5. 幂等性(接口规范)
- GET:只做查询,不改数据库。多次请求结果不变,满足幂等。
- POST:用来新增、提交数据。多次提交会重复创建数据,不幂等。
6. 编码与请求头
- GET:不需要
Content-Type。 - POST:必须指定
Content-Type(application/json/x-www-form-urlencoded),用来告诉后端 Body 是什么格式。
精简对照表
| 对比项 | GET | POST |
|---|---|---|
| 数据位置 | URL 拼接参数 | 请求体 Body |
| 数据大小 | 很小(URL 限制) | 无限制,支持大内容 |
| 明文可见 | 地址栏可见,不安全 | 地址不可见,更安全 |
| 用途 | 查询数据(列表、详情) | 提交数据(登录、新增、保存) |
| 缓存 | 自动缓存 | 默认不缓存 |
| 是否幂等 | 查询,幂等 | 新增,非幂等 |
对应你项目里的场景
- 登录
/login:提交账号密码 → 必须用 POST + JSON Body,不能把账号密码拼在 URL 上。 - 查询员工列表
/list:只查询数据 → 用 GET,分页参数拼在 URL 后面。
需要我顺便把 PUT、DELETE 一起给你总结一下 REST 规范吗?
支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!
HTTP 请求响应前置知识
https://firefly.cuteleaf.cn/posts/编程学习/计算机网络/http/