Java SpringWeb控制器如何确定重定向的HTTP状态代码

Java SpringWeb控制器如何确定重定向的HTTP状态代码,java,spring,spring-mvc,Java,Spring,Spring Mvc,我有一个SpringMVC应用程序,它有一个导致重定向的端点——请参阅下面的代码 我注意到Spring为此重定向返回的HTTP状态代码是307。我的问题是为什么Spring选择返回307而不是301或302 这仅仅是因为GET和POST两种方法都可以在这个端点上使用,而且307是客户端可以执行的最不允许的响应,因此Spring将其作为默认实现 import org.springframework.web.bind.annotation.RequestMapping; import org.spr

我有一个SpringMVC应用程序,它有一个导致重定向的端点——请参阅下面的代码

我注意到Spring为此重定向返回的HTTP状态代码是
307
。我的问题是为什么Spring选择返回
307
而不是
301
302

这仅仅是因为
GET
POST
两种方法都可以在这个端点上使用,而且
307
是客户端可以执行的最不允许的响应,因此Spring将其作为默认实现

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;


@RequestMapping(value = "/login", method = {RequestMethod.GET, RequestMethod.POST})
public String loginAttemptWithoutCookie() {
    return "redirect:" + "/some/other/url;
}

所有现代浏览器将自动检测302

302

实际上,将考虑
3xx
类别中的所有HTTP响应状态代码 重定向消息,所有现代浏览器将自动检测
302
找到的响应代码,并自动处理临时重定向操作

307

实际上
307
来自管理端的内部重定向 客户端单击购物车项目,然后浏览器将一篇帖子发送到/cart-items.html,然后告诉它在/purchase-selected-items.php重定向帖子

意思是,Spring正在尝试重定向自定义(管理员已经创建的视图)视图,而不使用默认重定向

302已被303或307取代(替换)。因此,新版本的Spring中出现了307。