vue-element-admin 模板 登錄頁面 post請求通過django的csrf認證,處理304錯誤


經過一天的研究,終於把 vue-admin-template 模板的 post 請求 和django的api 弄通了 沒有了那該死的304報錯了

直接貼代碼:

在main.js中 我直接給設置了一個 csrf_token 全局變量來接收 csrf 認證的token

  window.csrf_token ='' //聲明csrf_token 的全局變量

然后在 api 接口中設置 post方法的 

headers 請求頭

headers: { 'Content-Type': 'multipart/form-data', 'X-CSRFToken': csrf_token},
1 export function login(data) {
2   return request({
3     url: '/api/user/login/',
4     method: 'post',
5     headers: { 'Content-Type': 'multipart/form-data', 'X-CSRFToken': csrf_token},
6     params:{'username':data.username,'password':data.password}
7   })
8 }

api接口獲取csrf_token的接口方法

import request from '@/utils/request'


export function get_csrf() {
  return request({
    url: '/api/get_csrf',
    method: 'get',
  })
}

在系統加載登錄頁面時 先想后台發送get請求來獲取 csrf_token 中的token

methods:{
   get_token(){
      get_csrf().then(res => {
        // console.log(res.token)
        csrf_token = res.token  //將得到的token 賦值給全局變量
      })
    }
  },
  created(){
    this.get_token() //獲取csrf_token
    this.get_user() //獲取用戶列表
  }

這前台頁面都設置好了

后台views中  創建 get_csrf 的接口 用來動態獲取token

from django.middleware.csrf import get_token

# csrf認證
def get_csrf(request):
    # 生成 csrf 數據,發送給前端
    csrf_token = get_token(request)
    return JsonResponse({'token':csrf_token,'code':200})

這樣前台的 所有post的請求 就可以通過csrf認證了

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM