很简单,不是吗?
现在问题来了, 上面的代码能够在 /bar 上除了能够处理 GET 请求之外, 还能处理其他方法, 比如 POST /bar....不需去看标准里面公文化的描述, 简单地说 307 的语义是当一开始请求资源的方法是 POST 或者 PUT 的时候, 重定向之后重新请求资源还是应该为 POST/PUT, 即保持原有方法....而 303 的语义则是不管原来的方法是什么, 重新请求资源的方法都是 GET, 而这就是我们文中最初引入的 Spring 重定向例子表现出来的结果....其实一个很常见的做法是当用户使用 POST 请求提交表单之后, 服务器返回一个 302 Found 响应, 重定向到提交结果, 这样在很大程度上可以防止用户重复刷新表单带来的重复提交的问题....因为当 POST 请求返回之后浏览器已经自动提交了一个 GET 请求到新的结果页面,即使用户再次按 F5 刷新页面,也不会重复提交表单数据了.