我有一个Spring Boot应用程序从它的静态文件夹中提供Polymer入门套件。 UI-Application通过处理Oauth2单点登录的Zuul代理提供。一旦用户通过身份验证,就会设置一个带有JSESSIONID的cookie。
当我想从UI注销时,我向Zuul的/ logout端点发出POST请求,因此会话被破坏。成功注销后,我通过location.reload()
重新加载页面,这会将我重定向到登录视图,因为Zuul的Singe Sign On客户端将检测到不存在的会话。
上述工作正常,直到服务工作者开始工作。在location.reload()
上,服务工作者将为所有缓存页面提供服务,而不是尝试对我的API执行某些请求(只有经过身份验证的用户才能访问) 。结果是401响应,它在执行注销的错误处理程序中处理,从而导致无限循环。
现在的问题是,如何在邮寄/退出后避免服务工作者正在处理我的请求?
我无法控制JSESSIONID cookie,因为它是使用HTTP-Only设置的。
到目前为止我尝试了什么:
而不是location.reaload
我做location.replace(location.origin + "/logout")
并将navigateFallbackWhitelist
添加到:"^(?!.*\.html$|\/uaa\/|\/utr\/|\/logout\/).*"
但没有成功。
答案 0 :(得分:1)
location.reload(true)
可以解决问题。