Polymer Service Worker 预缓存

Polymer Service Worker Precache

我有一个 Spring 启动应用程序,从它的静态文件夹中为 Polymer 初学者工具包提供服务。 UI-应用程序通过处理 Oauth2 单点登录的 Zuul 代理提供服务。一旦用户通过身份验证,就会设置一个带有 JSESSIONID 的 cookie。

当我想从 UI 注销时,我向 Zuul 的 /logout 端点发出 POST 请求,因此会话被销毁。成功注销后,我通过 location.reload() 重新加载页面,这会将我重定向到登录视图,因为 Zuul 的 Singe Sign On 客户端将检测到不存在的会话。

上面的工作正常,直到 service-worker 启动。在 location.reload() 上,service worker 将服务所有缓存的页面,然后尝试对我的 API 执行一些请求(只有经过身份验证的用户才能访问)。结果是 401 响应,它在执行注销的错误处理程序中处理,从而导致无限循环。

现在的问题是,我怎样才能避免 service-worker 在 post 到 /logout 后服务于我的请求?

我无法控制 JSESSIONID cookie,因为它是使用 HTTP-Only 设置的。

到目前为止我已经尝试过: 而不是 location.reaload 我做 location.replace(location.origin + "/logout") 并添加一个 navigateFallbackWhitelist 到:"^(?!.*\.html$|\/uaa\/|\/utr\/|\/logout\/).*" 但没有成功。

location.reload(true) 成功了。