HttpServletResponse.sendRedirect()更改方法类型

时间:2015-05-17 21:34:21

标签: java java-ee servlets

只是一个简短的问题 - sendRedirect使用什么方法(例如GET,POST等)?它是否从请求继承它?如果是这样,是否可以将其更改为另一个? 谢谢!

2 个答案:

答案 0 :(得分:5)

sendRedirect发送RESPONSE,而不是REQUEST。因此,没有方法。

由客户端决定,但它通常会对您在重定向上提供的位置执行GET或HEAD请求。

答案 1 :(得分:2)

此问题有点混乱,请参阅规范http://tools.ietf.org/html/rfc7231#section-6.4

有许多重定向响应代码 - 300 301 302 303 307 308。我们可以将规则概括如下:

  1. 默认情况下,重定向不会更改请求方法
  2. 303总是将请求方法更改为GET(除非它是HEAD)
  3. 301/302将POST更改为GET
  4. 将其放在表格中(" - "表示相同的方法)

           300   301   302   303   307   308  
     HEAD   -     -     -     -     -     -
      GET   -     -     -     -     -     -
     POST   -    GET   GET   GET    -     -
    other   -     -     -    GET    -     -
    

    浏览器通常不会自动关注重定向到POST。

    实际上,303是Web应用程序最常用的代码。