0

我正在使用 Require JS 和 Orace JET

当会话超时时,我们如何处理 302 状态码或服务器返回的任何其他状态码。

是否可以将其配置为在这种情况下捕获它并将用户重定向到登录页面?

4

2 回答 2

3

RequireJS 看不到状态码 302。这就是浏览器的工作方式:浏览器将看到 302 并自动执行下一个 HTTP 请求。RequireJS 不会知道有重定向。

任何错误的 HTTP 状态代码(500、400 等)都将导致模块加载失败并被onError调用。

于 2016-08-05T11:20:22.233 回答
2

这是我的解决方案(由于运气而有效)。把它当作一个灵感。当我的应用程序中的会话到期时,请求将使用 302 转发到您所期望的登录页面。有两种主要类型的请求可能发生:

  • REST API 调用(通过 XMLHttpRequest)
  • 在用户所做的页面上导航

对于#2,302 没有问题。用户只是被重定向到登录页面。

对于#1,我可以以某种方式检测到它(有一定的可能性),因为登录页面位于不支持 CORS 的不同域上。XMLHttpRequest 请求将简单地失败,readyState 等于 0,statusText 等于“错误”(因为浏览器会将 XMLHttpRequest 阻止到不同的域)。我的所有 REST API 调用都有一个“侦听器”(拦截器),每当有 0 readyState 和“错误”statusText 失败时,这意味着会话可能已过期。

这当然不是解决方案,不能在任何地方使用。只是一个想法:)

于 2016-08-18T11:33:11.590 回答