在对服务器发出HTML / JS请求时处理302状态代码?

时间:2016-08-05 09:15:13

标签: javascript requirejs http-status-code-302 oracle-jet

我使用Require JS和Orace JET

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

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

2 个答案:

答案 0 :(得分:2)

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

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

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

对于#1,我可以以某种方式检测它(有一定概率),因为登录页面位于不支持CORS的不同域上。 XMLHttpRequest请求将失败,readyState等于0,statusText等于"错误" (因为浏览器会阻止XMLHttpRequest到不同的域)。我有一个"听众" (拦截器)在我的所有REST API调用上,每当一些失败时,0 readyState和"错误" statusText,表示会话可能已过期。

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

答案 1 :(得分:1)

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

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