簡體   English   中英

Django session 認證和 Axios POST 信號

[英]Django session authentication and Axios POST signals

I use Django Rest framework session authentication,after user logged in I can do successful POST request (/api/post/1/like/) using browsable API.

為什么我不能使用 axios 發布? (用戶實例是 Django 服務器必須保存上述 API )

我希望 POST 信號可能不知道登錄用戶,即使我以管理員用戶身份登錄

AXIOS FUNCTION

const likebutton = (id)=>{
           axios.post(`/api/post/${id}/like/`)         
    }

錯誤

Error: Request failed with status code 403
    at createError (createError.js:16)
    at settle (settle.js:17)
    at XMLHttpRequest.handleLoad (xhr.js:61)

django 文檔中,您可以使用以下腳本獲取csrftoken

function getCookie(name) {
    var cookieValue = null;
    if (document.cookie && document.cookie !== '') {
        var cookies = document.cookie.split(';');
        for (var i = 0; i < cookies.length; i++) {
            var cookie = cookies[i].trim();
            // Does this cookie string begin with the name we want?
            if (cookie.substring(0, name.length + 1) === (name + '=')) {
                cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
                break;
            }
        }
    }
    return cookieValue;
}
var csrftoken = getCookie('csrftoken');

或者,通過使用Javascript Cookie 庫

var csrftoken = Cookies.get('csrftoken');

然后,您所要做的就是更新您的axios調用以將其作為 header 發送:

const likebutton = (id) => {
    axios.post(`/api/post/${id}/like/`, { headers: { 'X-CSRFToken': csrftoken } })
}

暫無
暫無

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

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