【问题标题】:Servlet Filter is not being hit intermittentlyServlet 过滤器没有被间歇性命中
【发布时间】:2019-08-21 17:56:28
【问题描述】:

我面临一个非常奇怪的问题。

问题是我们有一个使用 Angular 4 构建的 Web 应用程序 (war),它还有一个“Servlet 过滤器”,它会扫描每个令牌请求,如果该令牌不可用,则 servlet 过滤器将导航到第三个派对登录页面。 如果 token 可用,它只会加载 index.html 和其他数据。 令牌和其他一些参数将作为会话 cookie 提供给当前的 Web 应用程序。

我已访问应用程序 URL 并登录到应用程序并在应用程序中执行一些操作并关闭浏览器窗口而不注销,我尝试再次打开相同的 URL,没有调用 Servlet 过滤器。

如果我刷新浏览器窗口,就会调用过滤器。

如果我清除浏览器缓存 Servlet 过滤器将被调用。我在 chrome 和 firefox 中观察到了相同的行为。 我确实检查了 localhost 访问日志,在那里我没有看到我的请求。 任何人都可以对问题是什么以及如何解决此问题有任何想法吗?

【问题讨论】:

  • 如果您重新打开浏览器窗口/选项卡而不注销,您的网站是否完全恢复到上次会话,即登录?
  • 是的,只需 1) 登录 2) 关闭窗口 3) 重新打开窗口 4) 输入 URL 或单击书签
  • @aravind 你能附上你的过滤器代码吗?
  • 嗨 @S.Denis 代码非常复杂,它有 1000 多行,包含很多方法和 if else 语句。我不能在这里发布所有内容。你想让我看一段特定的代码吗?
  • 您能否发布您的过滤器映射和过滤器代码。只是为了了解是否正在检查所有呼叫是否有令牌。另外,重新打开时,您是否检查过请求中是否发送了令牌?

标签: java angular servlets servlet-filters


【解决方案1】:

原因是谷歌浏览器正在缓存,所以请求不会全部发送到服务器。但是当我刷新 chrome 时,它​​会将请求发送到服务器。当我禁用缓存时,一切正常。关于缓存的一堂好课。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-30
    • 1970-01-01
    • 2014-08-08
    • 2023-03-13
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 2013-09-02
    相关资源
    最近更新 更多