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

Spring Boot生产环境部分Endpoint返回404,本地正常排查

生产环境Spring Boot + Spring Security部分Endpoint返回404(本地正常)

问题现象

请求https://api.example.com/user-profile/auth-data时返回404,响应内容如下:

{
    "timestamp": "2024-10-29T15:56:39.325+00:00",
    "status": 404,
    "error": "Not Found",
    "message": "No message available",
    "path": "/user-profile/auth-data"
}

本地环境同代码、同接口完全正常,已配置JWT认证、CORS和CSRF规则;浏览器Network显示is-token-valid等开放Endpoint可正常访问,仅auth-data这类需认证的Endpoint返回404,且已完成OAuth登录,持有token和JSESSIONID Cookie。

关键排查发现

对比控制器代码后确认:使用@RequestHeader("Authorization")或@ModelAttribute("token")作为方法参数的Endpoint都会返回404,移除这些参数后接口可正常调用。

解决排查方向

  • 检查Nginx反向代理配置,确认是否正确转发Authorization请求头。需确保配置中包含:
    proxy_set_header Authorization $http_authorization;
    proxy_pass http://your-backend-service;
    
    若Nginx未转发该头,后端无法获取Authorization参数,会因参数绑定失败导致异常,部分场景下会被映射为404而非预期的400/401。
  • 验证Spring Security配置,确认目标Endpoint的路径是否被正确纳入认证规则,而非被错误拦截或排除。比如检查securityMatcher、authorizeHttpRequests中的路径匹配规则,避免因路径匹配错误导致请求被拦截后返回404。
  • 临时修改参数注解为非必填,测试是否恢复正常:将@RequestHeader("Authorization")改为@RequestHeader(value = "Authorization", required = false),若接口不再返回404,说明生产环境请求中未携带该头,需排查前端或代理层的头传递问题。
  • 检查生产环境的Spring Boot上下文路径配置,确认server.servlet.context-path是否与本地一致。若生产环境配置了额外的上下文路径,需确保控制器的@RequestMapping路径与请求路径匹配。
  • 查看后端生产环境日志,搜索目标接口的请求日志,确认请求是否到达后端、是否有参数绑定异常或认证拦截的日志信息,这能直接定位问题根源。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 17:53:17