【问题标题】:tomcat - how to change url after redirecting to an error pagetomcat - 重定向到错误页面后如何更改url
【发布时间】:2018-07-24 00:46:07
【问题描述】:

我在 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/'

【问题讨论】:

    标签: java tomcat redirect web.xml


    【解决方案1】:

    &lt;error-page&gt; 指令设置进程内转发,而不是客户端重定向(这将是 3xx 响应)。

    如果您想将 401 转换为 302,请将您的 &lt;error-page&gt; 设置为指向将响应代码更改为 302 并带有 Location 响应标头的 JSP。

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 当然,但在 401 的情况下,我想重定向到指向我的 Angular 应用程序的“/”。我的 Angular 应用程序的默认路由是登录。
      • 问题是当 URI 被保留时,index.html 文件正在被提供,但是 index.html 对 '.js' 文件发出了错误的请求。请求将作为“localhost/account/script.js”而不是 localhost/script.js 我在想可能重定向到 401 上的 jsp 页面并在那里有重定向逻辑
      猜你喜欢
      • 2014-09-17
      • 2016-04-06
      • 1970-01-01
      • 2011-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-29
      相关资源
      最近更新 更多