4.通过axios给后端传输数据时报415
1.为啥会出现415错误
错误定义
状态码: 415 Unsupported Media Type
含义:“格式不拒”。前端发送的数据格式(通常是 JSON),后端服务器无法理解、无法处理或配置不支持,因此直接拒收。
一句话核心原因:后端没有配置好能把前端发来的 JSON 数据“翻译”成 Java 对象的转换器(Jackson)。
2.排查三部曲(按顺序检查)
-
✅ 第一步:查前端(确保数据是 JSON)
-
检查 Payload:数据必须是标准的 JSON 格式(如 { "name": "ylf", "age": 19 }),不能是 name=ylf&age=19。

如果出现这种,说明前端发给后端的不是Json格式
使用axios.post向后端发送json格式数据时候,直接使用对象形式,不用使用JSON.stringify(userInfo)将其转为json字符串在发送。否则便会出现以下错误,aixos.post底层会自动完成对象转化为json字符串。

-
检查 Header:请求头必须包含 Content-Type: application/json。

注意:如果用 jQuery,需显式设置 contentType 并使用 JSON.stringify()
-
-
✅ 第二步:查依赖(确保有翻译工具)
检查 pom.xml,必须引入 Jackson 依赖(Spring MVC 默认不含 JSON 处理库)。<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.15.2</version> </dependency> -
✅ 第三步:查后端配置(最容易漏!)
即便有了依赖,Spring 默认也不会开启 JSON 转换,必须手动开启。
A. 配置文件 (spring-mvc.xml): 必须添加注解驱动,这会自动注册 Jackson 转换器。<mvc:annotation-driven />-
重点
<mvc:annotation-driven />随便放在哪个xml文件都可以吗?绝对不行!❌ 不能随便放。
- 为什么不能随便放?(父子容器原理)
Spring 的应用通常会有两个“圈子”(容器):
父容器(Root Context):通常由 applicationContext.xml 加载。负责 Service(业务逻辑)、Dao(数据库操作)。它像是“后勤仓库”。
子容器(Web Context):由 Spring MVC 的 DispatcherServlet 加载(比如叫 spring-mvc.xml)。负责 Controller(接收请求)、视图解析。它像是“前台接待”。
关键点:<mvc:annotation-driven />这个开关,是专门用来教 Controller(前台) 如何说话(处理 JSON)的。 如果你把它配在 父容器(后勤仓库) 里,前台根本不知道这回事,依然不会处理 JSON,所以还是会报415。
- 为什么不能随便放?(父子容器原理)
B. 代码注解 (Controller): 接收参数时必须告诉 Spring 去读取 Body 中的 JSON。
// ★★★ 必须加 @RequestBody @RequestMapping("/add") public String add(@RequestBody User user) { return "success"; } -

浙公网安备 33010602011771号