【问题标题】:ajax call to timed-out cas-protected server: ajax redirection problemajax 调用超时 cas 保护服务器:ajax 重定向问题
【发布时间】:2011-08-16 00:41:12
【问题描述】:

我们的网络服务器使用 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 服务器,使其永远不会超时。除了增加服务器上的负载外,拥有永不超时的页面一开始就违背了超时的目的。

这导致了第三种糟糕的解决方案:只需删除超时。

How to Overcome Cross-domain Issues for Ajax Calls to CAS-protected Resources? 是一个类似的问题,没有答案,但这个问题似乎更广泛,所以我希望我们的问题有答案。

有没有人有解决这个问题的方法?

【问题讨论】:

    标签: javascript ruby-on-rails ajax cas


    【解决方案1】:

    你只能在重新验证时包装ajax xhr请求,以便浏览器可以理解重定向。那将需要更改 cas 代理的代码。 这种“必须检查和扩展(在最坏的情况下)每种 ajax Web 框架的解决方法。我们为 jquery 做了它,很高兴它是 rails3 的 ajax 基础。

    【讨论】:

    • 你是说你包装了 $.ajax 吗?你可以发布你的代码吗?它有什么作用?让我猜猜,它以某种方式捕捉到错误,弹出一个身份验证对话框,然后重新发送请求?
    猜你喜欢
    • 2011-08-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-19
    • 2015-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-04
    相关资源
    最近更新 更多