HTTP Put 方法在 Spring Boot 中不起作用

Posted

技术标签:

【中文标题】HTTP Put 方法在 Spring Boot 中不起作用【英文标题】:HTTP Put method not working from Spring Boot 【发布时间】:2019-05-01 05:56:30 【问题描述】:

我正在使用 Spring Boot 编写一个简单的控制器。我正在尝试 Postman 的 Put、Post 方法。

@RequestMapping(path="/formData", method=RequestMethod.POST)
public String processPostFormData()        
    return "practice/PutPage";


@RequestMapping(path="/formData", method=RequestMethod.PUT)
public String processPutFormData()         
    return "practice/PutPage";

Post 按预期工作,但 Put 给了我以下响应正文:

“状态”:405, "error": "方法不允许", "message": "JSP 只允许 GET POST 或 HEAD"

另外,csrf().disable() 设置在 WebSecurityConfigurerAdapter 的子类中。

如何解决这个问题?

【问题讨论】:

您是否同时在同一个地址进行 POST 和 PUT?看到方法名称也一样,这可能不是这种情况吗? @Clomez 相同的方法名是错字;编辑它。我正在使用邮递员;因此,只能发送一种方法。不同的方法不能有相同的路径吗? ***.com/questions/23886941/… 似乎是同样的问题 【参考方案1】:

你可以只保留method="post",但隐藏你可以发送_methodput,它就像一个魅力。我个人将它用于spring框架。

<form method="post" ...>
  <input type="hidden" name="_method" value="put" />
...

更多信息请参考this。

【讨论】:

我正在使用邮递员进行锻炼。另外,虽然可以设置 _method 参数,但是这里不能设置 type=hidden。并且仅使用 _method=put 参数对,结果仍然相同。

以上是关于HTTP Put 方法在 Spring Boot 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot - 如何在 REST 控制器 HTTP PUT 上允许 CORS

使用Spring boot开发RestFul 风格项目PUT/DELETE方法不起作用

spring-boot restful put方式提交表单

请求方法'OPTIONS'不受支持 - Spring Boot Application

不支持请求方法“OPTIONS”-Spring Boot 应用程序

spring boot 2.0 之后发送delete,put请求问题