webfilter java requestdispatcher在调试器控制台中提供站点内容,而不是重定向到

h6my8fg2  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(217)

我有一个对servlet的jquery调用。在调用servelt之前,我想使用筛选器检查用户是否成功登录:

$.get("Anwender",function(data){

    console.log(data);

    $.each(data,function(key,value){
     [...]
    }

 [...]
}

用于检查用户是否已登录的筛选器如下所示:

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
        throws IOException, ServletException {

final HttpServletRequest httpServletRequest = (HttpServletRequest) request;
String jwt = httpServletRequest.getHeader("Authorization");

if (jwt != null) {
//Some stuff here

 }
else
 {
final RequestDispatcher dispatcher = request.getRequestDispatcher("fehler.html");
dispatcher.forward(request, response);

 }
}

因此,如果我尝试运行代码,则会调用else语句,但在调试控制台中,我会看到fehler.html的内容。只是在控制台里,不是在webbroswer。

所有的js,css文件也被加载。那为什么我看不到正确的html站点呢?

inkz8wg9

inkz8wg91#

在我看来:
jquery代码对web服务器进行ajax调用
服务器返回html响应
浏览器接收可变数据中的文本html响应
浏览器记录html
所以客户端和服务器不匹配。服务器希望执行“普通http”并重定向未经身份验证的客户端。客户机希望调用rest服务或类似的服务来处理响应。
如果我是你,我会用状态码4xx更改服务器对错误的响应,并让客户机处理它。

相关问题