我有一个对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站点呢?
1条答案
按热度按时间inkz8wg91#
在我看来:
jquery代码对web服务器进行ajax调用
服务器返回html响应
浏览器接收可变数据中的文本html响应
浏览器记录html
所以客户端和服务器不匹配。服务器希望执行“普通http”并重定向未经身份验证的客户端。客户机希望调用rest服务或类似的服务来处理响应。
如果我是你,我会用状态码4xx更改服务器对错误的响应,并让客户机处理它。