403 Yasaklangan va so'raladi. Jangoda GETni ko'rsatadigan metod

AJAX yordamida dasturga ariza ma'lumotlari yuborishga harakat qilaman.

Javascript qismi:

function submit_changes() {
var all_data = [A_list, B_list,C_list]
$.ajax({
    type: "POST",
    url: "/my_url/",
    contentType: "application/json",
    //dataType: 'json',
    //data:JSON.stringify(all_data),
data:{
    csrfmiddlewaretoken: "{{ csrf_token }}",        
    form:JSON.stringify(all_data),
},

  success: function() {
        alert('Data captured successfully');
        //window.location.reload();
    },
    error: function(){
        alert('Error in data capture')
        //window.location.reload();
    }
});
}

urls.py bu bor

urlpatterns=[url(r'^my_url/$',views.my_url_fn)]

views.py

def my_url_fn(request):
    print "*** request is ***",request
    if request.method == 'POST':
        print "request is POST"
        return Response(json.dumps(submit_changes(request)))
    elif request.method == 'GET':
        print "request is GET"
        return Response(json.dumps(get_already_present_data()),mimetype='application/json')
    else:
        print "neither post nor get"

Html kodining formasi:

<div align="center">
  <form name="myForm" onSubmit="return 0">{% csrf_token %}    
    <input type="text" id="blah1" placeholder="Blah1…">
        <!-- few more fields -->
  </form> 
</div>
<div align='center'>
  <input id="submit_changes" type="button" align="middle" value="Submit Changes" onclick="submit_changes();" />
</div>

Javascriptni html-ga yukladim. Men 403 taqiqlangan xatolikni olaman va request.method GET-ni chop etmoqda.

Mening ikkita savolim bor:

1). Nima uchun so'rov so'raladi?

2). Nima uchun men hali ham 403 ta taqiqlangan xatni bergandan keyin yana qaytarib olamanmi?

Men juda ko'p narsani qidirdim va ularni sinab ko'rdim: Mening kodimga @csrf_exempt qo'shib, django.views.decorators.csrf import csrf_exempt dan sifatida import qilish. Hech qanday yaxshilanish yo'q. Settings.py saytidagi MIDDLEWARE ro'yxatidan django.middleware.csrf.CsrfViewMiddleware olib tashlashga harakat qildim. Hali ham progress yo'q! Bu erda yana bir savol bor. Bu parametrlar settings.py-da o'zgarmaganligini bildiradimi? Har qanday yordam katta taqdir bo'ladi!

1
Kodni o'zgartirgandan keyin serverni qayta ishga tushirdingizmi?
qo'shib qo'ydi muallif Jingo, manba
Kodni o'zgartirgandan keyin serverni qayta ishga tushirdingizmi?
qo'shib qo'ydi muallif Jingo, manba
Agar u kodni o'zgartirishni aniqlay olsa, u o'z-o'zidan qayta boshlanadi?
qo'shib qo'ydi muallif phanny, manba
Agar u kodni o'zgartirishni aniqlay olsa, u o'z-o'zidan qayta boshlanadi?
qo'shib qo'ydi muallif phanny, manba
Agar u kodni o'zgartirishni aniqlay olsa, u o'z-o'zidan qayta boshlanadi?
qo'shib qo'ydi muallif phanny, manba

6 javoblar

JavaScript-ni to'g'ri sozlash uchun, JavaScript-da, bu kabi bir narsa qilish kerak. Ma'lumotlarning bir qismiga kerak emas, balki so'rovlar sarlavhalari

function csrfSafeMethod(method) {
   //these HTTP methods do not require CSRF protection
    return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
}
$.ajaxSetup({
    beforeSend: function(xhr, settings) {
        if (!csrfSafeMethod(settings.type) && !this.crossDomain) {
            xhr.setRequestHeader("X-CSRF-Token", CSRF_TOKEN);
        }
    }
});

Django-da csrf_exempt amalga oshirishingizga hojat yo'q, chunki yuqorida ko'rsatilgan kod har qanday ajax talabiga CSRF belgisini AOK qiladi. (CSRF bu erda juda yaxshi sabab bor, shuning uchun uni ozod qilmaslik yaxshi)

1
qo'shib qo'ydi

JavaScript-ni to'g'ri sozlash uchun, JavaScript-da, bu kabi bir narsa qilish kerak. Ma'lumotlarning bir qismiga kerak emas, balki so'rovlar sarlavhalari

function csrfSafeMethod(method) {
   //these HTTP methods do not require CSRF protection
    return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
}
$.ajaxSetup({
    beforeSend: function(xhr, settings) {
        if (!csrfSafeMethod(settings.type) && !this.crossDomain) {
            xhr.setRequestHeader("X-CSRF-Token", CSRF_TOKEN);
        }
    }
});

Django-da csrf_exempt amalga oshirishingizga hojat yo'q, chunki yuqorida ko'rsatilgan kod har qanday ajax talabiga CSRF belgisini AOK qiladi. (CSRF bu erda juda yaxshi sabab bor, shuning uchun uni ozod qilmaslik yaxshi)

1
qo'shib qo'ydi

JavaScript-ni to'g'ri sozlash uchun, JavaScript-da, bu kabi bir narsa qilish kerak. Ma'lumotlarning bir qismiga kerak emas, balki so'rovlar sarlavhalari

function csrfSafeMethod(method) {
   //these HTTP methods do not require CSRF protection
    return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
}
$.ajaxSetup({
    beforeSend: function(xhr, settings) {
        if (!csrfSafeMethod(settings.type) && !this.crossDomain) {
            xhr.setRequestHeader("X-CSRF-Token", CSRF_TOKEN);
        }
    }
});

Django-da csrf_exempt amalga oshirishingizga hojat yo'q, chunki yuqorida ko'rsatilgan kod har qanday ajax talabiga CSRF belgisini AOK qiladi. (CSRF bu erda juda yaxshi sabab bor, shuning uchun uni ozod qilmaslik yaxshi)

1
qo'shib qo'ydi

Buni sinashingiz mumkin

<script type="text/javascript">

    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 = jQuery.trim(cookies[i]);
               //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');
    $(document).ready(function() {
        $.ajax({
            type: 'post',
            url: "{% url "url_to_view" %}",
            headers: {"X-CSRFToken": csrftoken},
            data: {id: "something to view"},
            success: function (response) {
                alert("success");
                });
            },
            failure: function (response) {
                alert(response.d);
            }
        });
    });
</script>
1
qo'shib qo'ydi
Xush kelibsiz :) ....
qo'shib qo'ydi muallif Shiv Shankar, manba
Katta rahmat. Ishladi!
qo'shib qo'ydi muallif phanny, manba
Oh yo'q. Men hali ham muammoga egaman. Xato qismiga ( xato: ) ishlamasa, uning xato: deb o'ylayman. Mumkin bo'lgan xatolik nima bo'lishi mumkin?
qo'shib qo'ydi muallif phanny, manba
Xatoni topdim. Men python kodlaridan birini import qilishni unutgan edim. Hozirda Django 1.6 dagi hamma narsa yaxshi. :)
qo'shib qo'ydi muallif phanny, manba

Buni sinashingiz mumkin

<script type="text/javascript">

    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 = jQuery.trim(cookies[i]);
               //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');
    $(document).ready(function() {
        $.ajax({
            type: 'post',
            url: "{% url "url_to_view" %}",
            headers: {"X-CSRFToken": csrftoken},
            data: {id: "something to view"},
            success: function (response) {
                alert("success");
                });
            },
            failure: function (response) {
                alert(response.d);
            }
        });
    });
</script>
1
qo'shib qo'ydi
Xush kelibsiz :) ....
qo'shib qo'ydi muallif Shiv Shankar, manba
Katta rahmat. Ishladi!
qo'shib qo'ydi muallif phanny, manba
Oh yo'q. Men hali ham muammoga egaman. Xato qismiga ( xato: ) ishlamasa, uning xato: deb o'ylayman. Mumkin bo'lgan xatolik nima bo'lishi mumkin?
qo'shib qo'ydi muallif phanny, manba
Xatoni topdim. Men python kodlaridan birini import qilishni unutgan edim. Hozirda Django 1.6 dagi hamma narsa yaxshi. :)
qo'shib qo'ydi muallif phanny, manba

Buni sinashingiz mumkin

<script type="text/javascript">

    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 = jQuery.trim(cookies[i]);
               //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');
    $(document).ready(function() {
        $.ajax({
            type: 'post',
            url: "{% url "url_to_view" %}",
            headers: {"X-CSRFToken": csrftoken},
            data: {id: "something to view"},
            success: function (response) {
                alert("success");
                });
            },
            failure: function (response) {
                alert(response.d);
            }
        });
    });
</script>
1
qo'shib qo'ydi
Xush kelibsiz :) ....
qo'shib qo'ydi muallif Shiv Shankar, manba
Katta rahmat. Ishladi!
qo'shib qo'ydi muallif phanny, manba
Oh yo'q. Men hali ham muammoga egaman. Xato qismiga ( xato: ) ishlamasa, uning xato: deb o'ylayman. Mumkin bo'lgan xatolik nima bo'lishi mumkin?
qo'shib qo'ydi muallif phanny, manba
Xatoni topdim. Men python kodlaridan birini import qilishni unutgan edim. Hozirda Django 1.6 dagi hamma narsa yaxshi. :)
qo'shib qo'ydi muallif phanny, manba
Python
Python
372 ishtirokchilar

Bu guruh python dasturlash tilini muhokama qilish uchun. Iltimos, o'zingizni hurmat qiling va faqat dasturlash bo'yicha yozing. Botlar mavzusini @botlarhaqida guruhida muhokama qling! FAQ: @PyFAQ Offtopic: @python_uz_offtopic

Python offtopic group !
Python offtopic group !
150 ishtirokchilar

@python_uz gruppasining offtop gruppasi. offtop bo'lsa ham reklama mumkin emas ) Boshqa dasturlash tiliga oid gruppalar @languages_programming

Javascript UZB
Javascript UZB
99 ishtirokchilar

@js_uzb @vuejs_uz @react_uz @nodejs_uz @angular_uz @ngTashkent @yiiframework_uz @laravel_uz @linux_uzbek @python_uz @swift_uzb —————— @uzdevgroup @UzGeeksGroup ——— @UzDev_Jobs @jobs_uzb