首页 > 解决方案 > 为什么 Spring "ForwardedHeaderFilter" 和 "RelativeRedirectFilter" 使用代码 303 而不是 302 重定向?

问题描述

ForwardedHeaderFilter

@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response,
        FilterChain filterChain) throws ServletException, IOException {

    if (this.removeOnly) {
        ForwardedHeaderRemovingRequest wrappedRequest = new ForwardedHeaderRemovingRequest(request);
        filterChain.doFilter(wrappedRequest, response);
    }
    else {
        HttpServletRequest wrappedRequest =
                    new ForwardedHeaderExtractingRequest(request);

        HttpServletResponse wrappedResponse = this.relativeRedirects ?
                    RelativeRedirectResponseWrapper.wrapIfNecessary(response, HttpStatus.SEE_OTHER) :
                    new ForwardedHeaderExtractingResponse(response, wrappedRequest);

        filterChain.doFilter(wrappedRequest, wrappedResponse);
    }
}

相对重定向过滤器

public class RelativeRedirectFilter extends OncePerRequestFilter {

    private HttpStatus redirectStatus = HttpStatus.SEE_OTHER;

“302”和“303”有什么区别?为什么 Spring 使用“303”而不是“302”?

标签: javaspringredirecthttp-status-codes

解决方案


推荐阅读