【问题标题】:How can I modify a Java servlet response header in case the container authentication has failed?如果容器身份验证失败,如何修改 Java servlet 响应标头?
【发布时间】:2023-03-30 08:58:01
【问题描述】:

我有一个 Java EE 项目,其中包含受 Web 容器身份验证保护的 Web 服务。 (HTTP-basic)(我们可以在这种情况下说:Web 服务是 servlet) A 想修改 servlet 响应标头。使用 servlet 过滤器不是一个好的解决方案,因为我想在用户身份验证失败的情况下访问响应对象。 (在这种情况下,servlet 过滤器不会运行,因为容器不会调用它)

原因是,我想更改 HTTP 状态码 401 和 403。那是因为客户端是由 Web Start 分发的,我不想让 javaws 修改我的客户端应用程序请求标头。

有一个 ServletRequestListener 监听器,但它不适合我,因为我想访问响应对象,而不是请求。

谢谢。

【问题讨论】:

标签: java servlets http-headers httpresponse


【解决方案1】:

复制整个答案

在 web.xml 中:

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

error.jsp:

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
    </head>
    <body>
        <%
        int status = response.getStatus();
        if (status == 401) {
            response.setStatus(403);
        }
        %>
    </body>
</html>

【讨论】:

    猜你喜欢
    • 2015-12-18
    • 2019-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-17
    • 2019-09-16
    • 1970-01-01
    • 2017-06-25
    相关资源
    最近更新 更多