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/jsonJSON 字符串 {"name":"xxx"}Ajax、前后端分离接口(90% 接口都用它)
text/plain纯文本简单字符串传递

注意:GET 请求没有请求体,不需要 Content-Type。

2. Accept#

告诉客户端想要接收什么格式的响应

Accept: application/json,text/html,*/*

3. Authorization / Token#

身份凭证

Authorization: Bearer eyJhbGci...

浏览器自动携带,会话凭证

Cookie: sessionid=xxx; token=xxx

5. Referer#

来源页面,防盗链校验使用

6. User-Agent#

客户端浏览器 / 设备信息,用来区分移动端、PC 端、爬虫。

7. Origin#

跨域请求才会自动带上,代表请求源域名。


三、响应头高频字段#

  1. Content-Type 告诉客户端返回的数据类型:
Content-Type: application/json
Content-Type: text/html;charset=utf-8
Content-Type: image/png

字符集 charset=utf-8 解决中文乱码。

  1. Access-Control-Allow-Origin 跨域 CORS 核心配置,允许前端域名访问接口。
  2. Location 302 重定向地址。
  3. Content-Length 响应体字节长度。

四、HTTP 请求方法(Web 交互必懂)#

  1. GET 获取资源,参数放在 URL 问号后面,无请求体,可缓存。
  2. POST 提交数据,带 Body,用于新增、提交表单、传 JSON。
  3. PUT 全量更新资源
  4. PATCH 局部更新
  5. DELETE 删除资源
  6. OPTIONS 预检请求(跨域时浏览器先发 OPTIONS)

五、状态码极简速记#

2xx 成功#

  • 200 OK 正常返回
  • 201 Created 创建成功

3xx 重定向#

  • 302 临时跳转
  • 304 资源未修改,走浏览器缓存

4xx 客户端错误#

  • 400 参数错误
  • 401 未登录 / 无令牌
  • 403 权限不足
  • 404 接口不存在
  • 405 请求方法不允许(POST 写成 GET)
  • 415 不支持的媒体类型 → 绝大多数是Content-Type 写错

5xx 服务端错误#

  • 500 服务器代码异常
  • 503 服务不可用

六、前后端交互高频踩坑点#

  1. 前端传 JSON,但是没写 Content-Type: application/json → 后端接收不到参数,报 415。
  2. 表单传文件必须用 multipart/form-data,不能用 json。
  3. GET 不能带 Body,很多后端框架会直接丢弃 GET 请求体数据。
  4. 跨域问题本质:浏览器同源策略,依靠后端配置 Access-Control-Allow-Origin
  5. 中文乱码:请求头、响应头统一加上 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-Typeapplication/json / x-www-form-urlencoded),用来告诉后端 Body 是什么格式。

精简对照表#

对比项GETPOST
数据位置URL 拼接参数请求体 Body
数据大小很小(URL 限制)无限制,支持大内容
明文可见地址栏可见,不安全地址不可见,更安全
用途查询数据(列表、详情)提交数据(登录、新增、保存)
缓存自动缓存默认不缓存
是否幂等查询,幂等新增,非幂等

对应你项目里的场景#

  1. 登录 /login:提交账号密码 → 必须用 POST + JSON Body,不能把账号密码拼在 URL 上。
  2. 查询员工列表 /list:只查询数据 → 用 GET,分页参数拼在 URL 后面。

需要我顺便把 PUT、DELETE 一起给你总结一下 REST 规范吗?

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!

赞助
HTTP 请求响应前置知识
https://firefly.cuteleaf.cn/posts/编程学习/计算机网络/http/
作者
伊月酱
发布于
2026-06-26
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
Firefly
Hello, I'm Firefly.
公告
欢迎来到我的博客!这是一则示例公告。
音乐
封面

音乐

暂未播放

0:00 0:00
暂无歌词
分类
标签
站点统计
文章
28
分类
10
标签
49
总字数
28,946
运行时长
0
最后活动
0 天前

文章目录