我们的 Web 服务器使用 CAS 进行单点登录。CAS 服务器在https://portal.ourdomain.com上运行 JASIG CAS 服务器,而 Web 服务器在http://service.ourdomain.com上运行 Rails 。
Rails 服务器将其会话超时设置得相当低,作为单一注销备份措施和其他原因。因此,偶尔,用户会被重定向到 portal.ourdomain.com 以进行重新身份验证。通常这是无缝的,因为 portal.ourdomain.com 会立即使用更新的票证 cookie 将它们重定向回 service.ourdomain.com,除非 CAS 会话已过期。
但是,这不适用于 AJAX。Web 浏览器不遵循 XHR 请求的重定向,即使域相同。
一个明显的解决方案是提供来自https://ourdomain.com的所有内容,并停止子域的废话。这是一项广泛的操作,需要通过 https 提供所有服务。
另一种解决方案是定期 ping 服务器,使其永远不会超时。除了增加服务器上的负载之外,拥有永不超时的页面首先会破坏超时的目的。
这导致了第三个糟糕的解决方案:只需删除超时。
如何克服对受 CAS 保护的资源的 Ajax 调用的跨域问题?是一个没有答案的类似问题,但这个问题似乎更广泛,所以我希望我们的问题有答案。
有没有人对这个问题有任何不糟糕的解决方案?