服务器返回状态码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);
});
},