获得“405 - 请求方法‘GET’不支持打电话时,”方法=删除(Getting “405 - R

2019-09-19 11:10发布

我有一个Spring MVC的Web应用程序。 在其与的应该删除其他资源的资源的按钮形式:

<td>
    <form action="/product-bases/${productBase.id}/positions/${position.id}" method="DELETE">
        <input type="submit" value="delete" />
    </form>
</td>

我的控制器:

@Controller
@RequestMapping(value = "/product-bases/{id}/positions")
public class ProductBasePositionController {

    @RequestMapping(value = "/{positionId}", method = RequestMethod.DELETE)
    public ModelAndView delete(@PathVariable Integer productBaseId, @PathVariable Integer positionId) {

所以理论上,服务器应该给控制器的路线。 但可惜没有,所以职务;)

我越来越

HTTP Status 405 - Request method 'GET' not supported

type Status report

message Request method 'GET' not supported

description The specified HTTP method is not allowed for the requested resource (Request method 'GET' not supported).
Apache Tomcat/7.0.19

很显然,我没有为尚未定义/位置/ ID的获取,但我为什么要,我想要做的现在删除..

(我也想从我的春天 - 测试 - MVC框架在模拟的servlet没有之间的任何执行Tomcat的运行这一点,它给了我一个400 - 错误的请求。)

那我在这里失踪?

哦,只是为了节省一些弯道:post和get将其他资源工作,所以我设置的其余部分都很好。

在启动服务器甚至告诉我:

RequestMappingHandlerMapping [INFO] Mapped "{[/product-bases/{id}/positions/{positionId}],methods=[DELETE],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public org.springframework.web.servlet.ModelAndView our.view.controller.ProductBasePositionController.delete(java.lang.Integer,java.lang.Integer)

任何人都一样困惑,因为我? 如果没有那么,请赐教!

Answer 1:

形式可通过提交GETPOST只(也许还PUT ,但我怀疑被广泛地实现),作为表单提交需要其中的数据被发送到服务器的方法。

DELETE方法不具有请求主体,所以,在表单动作指定不被支持。



Answer 2:

你有没有在你的web.xml中HiddenHttpMethodFilter过滤器?

<filter>
    <filter-name>hiddenHttpMethodFilter</filter-name>
    <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>hiddenHttpMethodFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

http://static.springsource.org/spring/docs/current/spring-framework-reference/html/view.html#rest-method-conversion



Answer 3:

该错误消息表明浏览器实际上是发送一个GET请求,而不是一个DELETE请求。

你需要做的是:

  • 检查网页浏览器是在当时的来源,

  • 使用浏览器的Web调试,看看有什么请求URL和方法实际上是。



Answer 4:

在微软Azure门户我得到这个错误的Java应用程序,当我打开验证/授权。 如果它在你的情况下,同样的问题,回复此动作。



文章来源: Getting “405 - Request method 'GET' not supported when calling” method=DELETE