springMVC重定向method转换问题排查

问题

springMVC中使用redirect方式进行接口重定向时,默认http返回码是302,该返回码会强制将原本post请求转换成get,而对于重定向后只支持post请求的接口可能会抛出method not support异常,以下是抓包的情况。
在这里插入图片描述

解决思路

在http重定向中,post方法可以重定向成get和post,如果要强制转换成post,我们需要在重定向的返回码设置为307

案例

下面以自己的demo为例,展示如何在springMVC中使用307返回码重定向

@PostMapping("doReissue")
    public  RedirectView doReissue(HttpServletRequest request, @RequestBody PointIssueTradeReq req) {  
        //设置response status为TEMPORARY_REDIRECT
        request.setAttribute(
                View.RESPONSE_STATUS_ATTRIBUTE, HttpStatus.TEMPORARY_REDIRECT);
        //重定向的新地址
        return new RedirectView(request.getContextPath()+"/forward/pointIssue");
    }

再次抓包,重定向的状态码为307,两次请求均为post,问题解决
在这里插入图片描述

参考文档:https://www.baeldung.com/spring-redirect-and-forward

你可能感兴趣的:(问题集锦,spring)