axios通過django的csrf驗證
阿新 • • 發佈:2018-07-04
django ftok 截器 user return name document regex int
django會在瀏覽器的cookie裏面保存一項csrftoken=GvzB3ilhlgadishmascacsilreclherlkjhaklsdv3qx4M96XRG88omScDPQaKoMxJ;
這個是從django生成的,django會檢查每個http請求的headers 裏面的 X-CSRFToken 項的值是否和cookie裏面保存的值相同,如果不相同或者缺失,就拒絕這個請求,如果相同,說明這次請求是從真實用戶發起的。
所以要做的就是在每次請求的 headers 裏面加上X-CSRFToken:csrftoken值
axios的配置代碼如下:
//添加請求攔截器,在發送請求前攔截,對請求進行操作 this.$http.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 }); // 發送 POST 請求 this.$http({ method: ‘post‘, url: ‘http://127.0.0.1:8000/user/‘, data: { username: ‘abc123‘, password:‘abc123‘ } });
axios通過django的csrf驗證