axios拦截器获取token

服务器返回状态码403 Forbidden的时候调用django后端自定义的get_token方法,设置好csrftoken字符串后再调用post方法,携带csrftoken

sayhello() {
      var axios= this.axios;
      this.axios.interceptors.request.use((config) => {
        config.headers["X-Requested-With"] = "XMLHttpRequest";
        let regex = /.*csrftoken=([^;.]*).*$/; // 用于从cookie中匹配 csrftoken值
        config.headers["X-CSRFToken"] =
          document.cookie.match(regex) === null
            ? null
            : document.cookie.match(regex)[1];
        return config;
      });
----------------------------------------响应拦截器配置
      this.axios.interceptors.response.use(
        (response) => {
          return response;
        },
        function (error) {
          console.log(error.response.status)
          if (403 === error.response.status) {
            axios
              .get("api/api/get_token/")
              .then(function (response) {
              })
              .catch(function (err) {
                alert(err);
              });
            return Promise.reject('token is null')
          } else {
            return Promise.reject(error+'tail');
          }
        }
      );
-----------------------------------------------------
      this.axios
        .post("api/api/pathlist/")
        .then(function (response) {
          alert(response.data); 
        })
        .catch(function (err) {
          alert(err);
        });
    },
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容