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

Spring提交表单后偶发405错误 执行图片处理代码后报POST请求不支持

问题根因分析

  • 告警日志与当前业务请求时序错位
    你看到的405告警和正在处理的表单提交请求不属于同一个请求。Tomcat的http线程池会复用线程,这条http-apr-8081-exec-96线程之前处理了一个不支持POST方法的请求,抛出405后打印告警的时间点,刚好和你当前业务请求执行到ImageIO.read(file)阻塞的时间段重合,加上日志如果是异步输出,就会出现日志顺序错位,让你误以为告警是当前业务代码触发的。
  • 405异常在Controller方法外抛出,无法被方法内的try catch捕获
    如果你的接口通过@GetMapping限定了仅支持GET请求,部分场景前端提交表单时错误使用POST方法,Spring的DispatcherServlet在路由阶段就会直接抛出405异常,由DefaultHandlerExceptionResolver打印告警,根本不会进入你的业务方法,你写在方法内部的try catch自然捕获不到这个异常。
  • 业务异常触发错误页转发导致405
    如果ImageIO.read读取网络URL时抛出IO异常、或者后续Scalr.resize处理图片时抛出OOM等运行时异常,你没有完全捕获这些异常的情况下,Spring会默认将请求转发到内置的/error端点,该端点默认仅支持GET请求,转发时保留了原请求的POST方法,就会触发"POST方法不支持"的405告警,这个异常是Spring MVC框架层面的异常解析流程抛出的,不会进入你业务代码的捕获逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 23:00:03