HttpServletResponse sendRedirect永久

z12*_*345 58 java servlets

这将使用临时 302 HTTP状态代码重定向请求:

HttpServletResponse response;
response.sendRedirect("http://somewhere");
Run Code Online (Sandbox Code Playgroud)

但是可以使用永久的 301 HTTP状态代码重定向它吗?

Bal*_*usC 97

您需要Location手动设置响应状态和标头.

response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
response.setHeader("Location", "http://somewhere/");
Run Code Online (Sandbox Code Playgroud)

之前设置状态sendRedirect()将不起作用,因为sendRedirect()将其覆盖到SC_FOUND之后.

  • 谢谢,这个有效.要提交响应,还必须刷新缓冲区:`response.flushBuffer();` (6认同)
  • `sendError()`将状态作为参数,`sendRedirect()`不是.无论当前状态如何,它都隐式设置302. (2认同)