Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在请求发送之前拦截xmlhttprequest并执行一些api调用_Javascript_Jquery_Ajax_Reactjs_Xmlhttprequest - Fatal编程技术网

Javascript 如何在请求发送之前拦截xmlhttprequest并执行一些api调用

Javascript 如何在请求发送之前拦截xmlhttprequest并执行一些api调用,javascript,jquery,ajax,reactjs,xmlhttprequest,Javascript,Jquery,Ajax,Reactjs,Xmlhttprequest,在请求被发送之前,如何拦截xmlhttprequest并进行一些验证或进行一些api调用 因为我想集成jwt过期的逻辑,在这里我验证jwt是否过期,如果是,则调用令牌api并设置为本地存储,然后执行其他api,这样用户状态将是持久的,我使用xmlhttpsrequest 我不知道在发送或打开时在哪里放置逻辑 xhr.send = function(data) { const rsc = this.onreadystatechange; this.onreadystat

在请求被发送之前,如何拦截xmlhttprequest并进行一些验证或进行一些api调用

因为我想集成jwt过期的逻辑,在这里我验证jwt是否过期,如果是,则调用令牌api并设置为本地存储,然后执行其他api,这样用户状态将是持久的,我使用xmlhttpsrequest

我不知道在发送或打开时在哪里放置逻辑

xhr.send = function(data) {
      const rsc = this.onreadystatechange;


      this.onreadystatechange = function() {


        if(this.readyState === 4 && this.status >= 400 && this.status < 600) {
          let el = typeof this.response === 'object' ? JSON.stringify(this.response) : this.response;

        }

        if (this.readyState === 4 && this.status === 401) {
          console.log('session destroyes')d

        } else if (rsc) {
          return rsc.apply(this, arguments);
        }
      };

      return send.apply(this, arguments);
    };
  }
xhr.send=函数(数据){
const rsc=this.onreadystatechange;
this.onreadystatechange=函数(){
如果(this.readyState==4&&this.status>=400&&this.status<600){
让el=typeof this.response==“object”?JSON.stringify(this.response):this.response;
}
if(this.readyState==4&&this.status==401){
console.log(‘会话销毁’)d
}否则如果(rsc){
返回rsc.apply(这是参数);
}
};
返回send.apply(此参数为参数);
};
}

> > p>在到期后还原令牌,需要考虑几个重要事项。例如,需要再次发送失败的请求。我可以推荐你使用 我知道使用axios,但我对xmlhttprequest印象深刻,我的应用程序在xmlhttprequest上运行我知道使用axios,但我对xmlhttprequest印象深刻,我的应用程序在xmlhttprequest上运行