禁止(未设置CSRF cookie。):

时间:2020-03-25 07:08:45

标签: asp.net django ajax django-rest-framework

我正在使用ajax将数据从asp(作为前端)发布到Django rest api(作为后端) 首先,我在访问其他域时遇到问题,但是使用CORS可以解决 然后我有另一个与CSRF有关的错误 以及上述错误:禁止(未设置CSRF cookie)。 我已经使用@csrf_exempt通过了此验证,但是我想要一个没有csrf提示使用它的解决方案 我尝试了不止一种解决方案,但是它不起作用,或者我不了解该方法 有没有明确的解决方案来解决它在ajax 在错误403中, '''

JQuery sends " xhr.send( options.hasContent && options.data || null );

'''

我将在下面添加我的.cshtml文件的代码

'''

form id="std_form" class="mx-auto form-horizontal" method="POST" asp-antiforgery="false">
                     @Html.AntiForgeryToken()
                    <div class="box-body">
                        <div class=" form-group">
                            <label for="inputEmail3" class="col-sm-3">ID</label>
                            <div class="col-md-8">
                                <input type="number" id="first">
                            </div>
                        </div>
                        <div class=" form-group">
                            <label for="inputEmail3" class="col-sm-3">ID</label>
                            <div class="col-md-8">
                                <input type="number" id="second">
                            </div>
                        </div>
                        <div class=" form-group">
                            <label for="inputEmail3" class="col-sm-3">ID</label>
                            <div class="col-md-8">
                                <input type="number" id="third">
                            </div>
                        </div>

                    </div>
                    <!-- /.box-body -->
                    <div class="box-footer  d-flex">
                        <button type="submit"  id="save_btn" class="btn-success btn">Save</button>
                    </div>
                    <!-- /.box-footer -->

                </form>
            </div>

'''

'''

window.CSRF_TOKEN = "{% csrf_token %}";
    function getCookie(c_name) {
        if (document.cookie.length > 0) {
            c_start = document.cookie.indexOf(c_name + "=");
            if (c_start != -1) {
                c_start = c_start + c_name.length + 1;
                c_end = document.cookie.indexOf(";", c_start);
                if (c_end == -1) c_end = document.cookie.length;
                return unescape(document.cookie.substring(c_start, c_end));
            }
        }
        return "";
    }

'''

这是一个ajax请求

'''

$(document).on('submit', '#std_form', function (e) {
    e.preventDefault();
    let val1 = parseInt($('#first').val());
    let val2 = parseInt($('#second').val());
    let val3 =  parseInt($('#third').val());
    let x={val1,val2,val3};
    $.ajax({

        type: 'POST',
        url: ('http://127.0.0.1:8000/Callfun/processdata/'),

         data:{
            First: val1,
            Second:val2,
            Third:val3,
           csrfmiddlewaretoken: window.CSRF_TOKEN,
        },  
        success: function (context) {

            alert("Wooooooooowwwww");
            $('#first').val(context.Max);
            $('#second').val(context.Min);
            $('#third').val(context.Avg);
        },
        error: function (context) {

         alert("So Bad");


        }
    })

 })

'''

0 个答案:

没有答案