You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring v2.3.2部署Tomcat8后Axios POST请求报404错误求助

排查Spring + Axios POST请求404问题

我来帮你一步步排查这个404问题,前后端对接时这种情况确实很容易踩坑,咱们从几个常见方向入手:

1. 优先确认部署后的上下文路径是否匹配

这是最常见的坑!你本地运行时,Spring Boot默认的上下文路径是空的(或者你配置了csis),但部署到Tomcat后,上下文路径是由你的war包名称决定的:

  • 如果你的war包叫csis.war,部署后上下文路径是/csis,请求URL没问题;
  • 如果war包名字是其他(比如myapp.war),或者你手动修改了Tomcat的上下文配置,那实际请求URL应该是/myapp/ajax/student/search,而非带csis的路径。

验证方法:

  • 打开浏览器开发者工具的「Network」标签,触发搜索请求后,查看「Request URL」的完整路径,确认是否和Tomcat部署的上下文路径一致;
  • 直接访问http://你的Tomcat地址:端口/上下文路径,比如http://localhost:8080/csis,看是否能打开应用首页,确认上下文路径正确。

2. 检查Spring是否正确扫描到控制器

如果控制器没有被Spring容器加载,那对应的请求映射自然不存在,会返回404:

  • 确认你的启动类(比如Application.java)上的@SpringBootApplication或@ComponentScan注解包含了StudentController所在的包;
  • 查看Tomcat启动日志,搜索是否有类似以下的日志:
    Mapped "{[/csis/ajax/student/search],methods=[POST]}" onto public com.xxx.StudentSearch com.xxx.StudentController.searchStudent(com.xxx.Student)
    
    如果没有这条日志,说明控制器没被扫描到,需要调整@ComponentScan的扫描范围。

3. 确认请求Content-Type与后端兼容

你的后端用了@RequestBody接收JSON参数,Axios默认会发送Content-Type: application/json,但需要确保:

  • Tomcat没有限制JSON类型的请求;
  • 前端没有意外修改了Content-Type(比如某些全局拦截器篡改了请求头)。

验证方法:

  • 在开发者工具的Network标签里,查看请求的「Request Headers」,确认Content-Type是application/json;
  • 用Postman直接发送POST请求到正确的URL,Body选择raw -> JSON,传入{"studentNumber": "测试学号"},看是否能正常响应,排除前端代码的问题。

4. 排查拦截器/过滤器是否拦截了请求

如果你的应用配置了Spring Security或者自定义过滤器,可能会拦截POST请求:

  • 检查Security配置,是否允许/csis/ajax/student/search这个路径的匿名访问;
  • 查看过滤器的逻辑,是否有拒绝POST请求或者未正确放行的情况。

5. 检查DispatcherServlet的映射配置(非Spring Boot场景)

如果是传统的Spring MVC项目,需要确认web.xml里的DispatcherServlet映射是否正确:

<servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>/</url-pattern> <!-- 确保是/,而不是/*或者其他限制路径 -->
</servlet-mapping>

如果映射路径不对,会导致Spring无法处理该请求。

按照上面的步骤逐一排查,应该能找到问题所在。最优先检查的是上下文路径和控制器扫描这两点,大部分404问题都出在这里。

内容的提问来源于stack exchange,提问作者Ian Nato

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 18:07:33