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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章