tomcat - 如何在重定向到错误页面后更改 url

tomcat - how to change url after redirecting to an error page

我在 web.xml 中使用以下配置重定向到错误页面

<error-page>
        <error-code>401</error-code>
        <location>/</location>
</error-page>

当发生 401 错误时,它会重定向到“/”,但 URI 会保留。

假设我正在尝试访问需要身份验证的 'localhost:8080/account' 资源,然后重定向正在进行但 URL 仍然是 'localhost:8080/account'。

我想知道如何重定向到“/”并将 url 设为 'localhost:8080/'

您想告诉客户端 localhost:8080/account 不存在,因此该资源应该报告 404 状态。为什么要重定向到根目录?根目录存在,因此重定向到根目录并返回 404 将是错误的。

错误页面指令只是告诉 tomcat 从哪里提取 404 页面的自定义 HTML 样式。不应将客户端重定向到其他资源,因为 - 如前所述 - 这会一起改变语义。

<error-page> 指令 set-up in-process 转发 s,而不是 client-redirects(这将是 3xx 响应)。

如果您想将 401 转换为 302,请将您的 <error-page> 设置为指向 JSP,该 JSP 将响应代码更改为具有 Location 响应的 302 header.

请注意,将 401 响应更改为 302 响应(当遵循重定向时可能会以 200 结束)有点违背了首先获得 401 响应的目的。