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

开启Spring HiddenMethodFilter后仍提示PUT请求不支持的问题

排查步骤与解决方向

1. 检查表单提交核心配置

浏览器原生仅支持GET/POST请求,Spring的HiddenHttpMethodFilter依赖POST请求+特定隐藏字段实现请求方法转换,需确认:

  • 表单method属性必须设为post,不能直接写put
  • 表单内必须添加隐藏字段:<input type="hidden" name="_method" value="PUT"/>,字段名_method严格大小写敏感
  • 表单action属性的路径,需与Controller中PUT映射的路径完全匹配(包括首尾斜杠、大小写)

2. 验证Controller请求映射

  • 确认登录处理方法使用@PutMapping注解,或@RequestMapping(method = RequestMethod.PUT),且映射路径与表单action完全一致
  • 检查方法参数配置,比如是否误用@RequestBody导致请求解析异常(虽报错为方法不支持,但参数错误可能间接引发问题)

3. 确认HiddenHttpMethodFilter生效状态

  • 查看Spring启动日志,确认HiddenHttpMethodFilter已加载(日志会有类似Mapping filter: 'hiddenHttpMethodFilter'的记录)
  • 若存在自定义配置类,检查是否覆盖了默认Filter注册,导致spring.mvc.hiddenmethod.filter.enabled=true失效;可手动注册Filter:
    @Bean
    public HiddenHttpMethodFilter hiddenHttpMethodFilter() {
        return new HiddenHttpMethodFilter();
    }
    
  • 检查Filter执行顺序:若有自定义Filter(如安全认证Filter),需确保HiddenHttpMethodFilter在其之前执行,避免请求未完成方法转换就被拦截

4. 查看实际请求详情

  • 打开浏览器开发者工具(F12),切换至Network标签,提交表单后查看请求:
    • 确认浏览器实际发送的Request Method为POST
    • 检查Form Data中是否包含_method: PUT参数
    • 若参数不存在,说明Thymeleaf模板渲染隐藏字段时出错,检查模板语法(如字段名拼写)

5. 检查Spring版本与依赖

  • 确保Spring Boot版本在2.2及以上(该版本后spring.mvc.hiddenmethod.filter.enabled=true可直接启用Filter),旧版本需手动配置
  • 确认spring-web依赖正常引入,无版本冲突

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 07:58:18