首先是后端,用户访问首页的时候通常不会有csrf问题,在这里添加cookie
from django.middleware.csrf import get_token
csrf_token = get_token(request)
response= render(request, "index.html")
response.set_cookie('csrf_token', csrf_token)
return response
这样csrf就随着cookie一起过去了
然后是axios的设置
添加请求拦截器
通过正则拿到csrf值
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
});
这样就行了