1. 程式人生 > >axios通過django的csrf驗證

axios通過django的csrf驗證

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驗證