AngularJS网站错误,因为会话过期在反向代理

vyu0f0g1  于 2023-08-02  发布在  Angular
关注(0)|答案(1)|浏览(88)

我正在管理一个AngularJS网站背后的反向代理用于身份验证。几个小时后,反向代理上的会话将过期。
如果网站在浏览器中仍然打开,用户点击页面,框架将返回JavaScript,其中不包含javascript,而是反向代理登录页面的HTML,以<!DOCTYPE html>开头
这无法被解析并引发错误"Uncaught SyntaxError: expected expression, got '<'"由于这些错误,整个页面都是黑色的。一个解决方法是刷新页面,但我们所有的用户都不知道。
我可以做些什么来优雅地解决这个问题?

70gysomp

70gysomp1#

使用AngularJS HTTP拦截器检查API响应是否包含HTML。如果是,则表示会话已过期,因此将用户重定向到登录页面或显示会话过期通知。
下面是一个经典的例子,但是你需要根据代码调整它:

app.factory('myInterceptor', function($q, $window) {
  return {
    response: function(response) {
      if (typeof response.data === 'string' && response.data.includes('<!DOCTYPE html')) {
        $window.location.href = '/login';
      }
      return response;
    }
  };
});

app.config(function($httpProvider) {
  $httpProvider.interceptors.push('myInterceptor');
});

字符串
希望我的回答对你有帮助

相关问题