gpt4 book ai didi

Java Servlet Filter重定向问题

转载 作者:搜寻专家 更新时间:2023-10-31 19:36:18 26 4
gpt4 key购买 nike

我的身份验证过滤器有问题。当过滤器重定向到登录页面时,登录 JSP 中不会显示任何图像。但是,如果我在登录后手动转到登录页面,则会显示图像。

我不明白为什么会这样!我感谢任何帮助。 :-)

授权过滤器:

if (authorized == null && path.indexOf("Auth") == -1 && path.indexOf("Login") == -1 ) {
httpResponse.sendRedirect("Login");
return;
} else {
chain.doFilter(request, response);
}

登录 servlet:

// Just using a servlet in case I want more data sent to the jsp
Dispatcher.dispatch("views/login.jsp", request, response);

登录.jsp:

<img src="images/logo.png" />

jsp 在其他方面是“正常的”,所有必需的 HTML 标记都存在。 “images”文件夹与所有其他 jsp 和 javascript 一起位于项目的默认“web”文件夹中。

在此先感谢您的帮助。 :)
- 斯蒂安

最佳答案

这是因为相对路径。

  • 您的 Login 位于上下文的根目录中
  • 你的图片可能是 /views/images/
  • 当您转发时,浏览器只知道请求的 URL。

所以当你转发时,图片是在/images(因为它们是相对于当前地址)而不是/views/images/

如何解决。两种选择:

  • 不要从您的 servlet 转发;改为重定向
  • 不要从过滤器重定向到 servlet;直接重定向到登录页面

更新:确保图像不受过滤器的影响。两个选项:

  • 它们不应该被过滤模式匹配
  • 过滤器中的 .png、.jpeg、.css 等不应发生重定向。用 request.getRequestURI()
  • 检查这个

关于Java Servlet Filter重定向问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2190733/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com