How to use csrf_token in Django RESTful API and React?

前端 未结 2 937
野的像风
野的像风 2021-02-01 21:44

I have previous experience in Django. If add line {csrf_token} in Django templates then Django handles the functionalities o

2条回答
  •  谎友^
    谎友^ (楼主)
    2021-02-01 21:56

    I used jquery for ajax in react, so in this case here is a solution :

    let csrfcookie = function() {  // for django csrf protection
                let cookieValue = null,
                    name = "csrftoken";
                if (document.cookie && document.cookie !== "") {
                    let cookies = document.cookie.split(";");
                    for (let i = 0; i < cookies.length; i++) {
                        let cookie = cookies[i].trim();
                        if (cookie.substring(0, name.length + 1) == (name + "=")) {
                            cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
                            break;
                        }
                    }
                }
                return cookieValue;
    };
    
    $.ajax({
           type: "POST",
           beforeSend: function(request, settings) {
                        if (!(/^http:.*/.test(settings.url) || /^https:.*/.test(settings.url))) {
                            request.setRequestHeader("X-CSRFToken", csrfcookie());
                        }
    },
    
    .... /// other codes
    

提交回复
热议问题