簡體   English   中英

Django Rest 框架說 CSRF 驗證失敗,盡管 CSRF 令牌包含在 axios POST Z0995EFZ640F39E

[英]Django Rest Framework says CSRF verification failed despite CSRF token is included in axios POST header

我有以下反應代碼來調用 django rest 框架 API:

import Cookies from 'js-cookie';
import axios from "axios";

async downloadVideowiseCSV (fromDate, toDate) {
        var url = '/stat/getStats/';
        const axiosInstance = axios.create(); 

        try {
            const response = await axiosInstance.post(url,
                {
                    data: {
                        'format': 'json'
                    },
                    header: {
                        'X-CSRFToken': Cookies.get('csrftoken')
                    }
                }
            )
        //...
}

當此方法被調用時,相應的請求會因 CSRF 驗證而失敗:

在此處輸入圖像描述

但是,當我檢查請求的有效負載時,我可以看到X-CSRFTOken確實已填充:

在此處輸入圖像描述

那么這里出了什么問題?

問題出在您的 axios 請求中,在 HTTP 請求的正文中發送 header 是不正確的。

以下應該是有效的 axios 請求,它將數據與選項 ex 分開:

const config = {
  headers: { 'X-CSRFToken': Cookies.get('csrftoken') },
};

const data = {format: 'json'}

axios.post('http://YOUR_URL', data, config)
  .then((response) => {
  console.log(response.data);
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM