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

Handle 302 status code upon HTML/JS request to server?

本文关键字:处理 状态 代码 服务器 HTML JS 请求      更新时间:2023-09-26

我正在使用Require JS和Orace JET

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

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

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

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

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

  • REST API调用(通过XMLHttpRequest(
  • 用户在页面上进行的导航

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

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

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