डीजेंगो दस्तावेज के अनुसार, 1.3 में AJAX पोस्ट अनुरोध (कम से कम Jquery के साथ) के लिए, हमें केवल यह snippet मुख्य जेएस फ़ाइल में जोड़ने की आवश्यकता है। यह स्निपेट कुकीज़ से csrftoken मिलता है, और फिर इसे सभी AJAX अनुरोध के लिए सेट अप करें। यह काम है, लेकिन क्या होगा अगर csrftoken कुकीज़ में मौजूद नहीं है? मैंने सोचा कि render_to_response और सत्रों में csrftoken अगर स्वचालित रूप से दोनों प्रस्तुत करता है, और टोकन नहीं है, तो इसे हमारे लिए सेट करें। लेकिन वे नहीं हैं। तो, मुझे इसे अपने आप लागू करने की ज़रूरत है? या शायद AJAX csrf सुरक्षा को संभालने का एक और तरीका है?Django में अजाक्स सीएसआरएफ समस्या 1.3
उत्तर
आपकी कुकी केवल, CSRF टोकन में शामिल होंगे, तो या तो टेम्पलेट टैग {% csrf_token %}
टेम्पलेट में इस्तेमाल किया गया था अनुरोध उत्पन्न करने के लिए, या यदि आप get_token
फोन django.middleware.csrf
से (तर्क के रूप में request
वस्तु के साथ)।
get_token
फ़ंक्शन request
ऑब्जेक्ट पर मेटाफॉर्मेशन सेट करता है जो बदले में कुकी सेट करने के लिए django.middleware.csrf.CsrfViewMiddleware
मिडलवेयर बताता है।
अजाक्स के लिए, आपको प्रत्येक अनुरोध के साथ सीएसआरएफ टोकन पास करना चाहिए।
$.ajaxPrefilter(function(options, originalOptions, jqXHR) {
if(!options.crossDomain) {
if(options.data) {
options.data += "&";
} else {
options.data = "";
}
options.data += "csrfmiddlewaretoken={{csrf_token}}";
}
});
जब एक पृष्ठ है कि पहले से ही {% csrf_token%} का उपयोग करने पर कोई रूप नहीं है, कुकी नहीं भेजी जाएगी: jQuery के लिए, मैं निम्नलिखित कोड का उपयोग करें। इसलिए, जैसा कि आपने नोट किया है, आप इस पृष्ठ पर अजाक्स का उपयोग करने का प्रयास करते समय एक त्रुटि प्राप्त करेंगे। यदि आपके पास फॉर्म और AJAX पोस्ट के विभिन्न संयोजनों वाले पृष्ठों के मिश्रण के साथ साइट है, तो यह अनियमित व्यवहार का कारण बन जाएगा।
यह पहले से ही सूचित किया गया है और तय: https://code.djangoproject.com/ticket/15354
पैच में समाधान, होगा 1.3.1 के साथ शुरू करना चाहिए, ensure_cookie_csrf डेकोरेटर है। वह सजावट 1.3 या 1.2.5
में मौजूद नहीं है, हालांकि प्रतीक्षा करने की कोई आवश्यकता नहीं है। बस किसी भी दृश्य जो AJAX के पदों में शामिल है एक CSRF प्रपत्र को यह पंक्ति जोड़ें:
request.META["CSRF_COOKIE_USED"] = True
उदाहरण:
def calculator(request):
request.META["CSRF_COOKIE_USED"] = True
return render_to_response('calc.html', {'form': CalcForm()})
FYI करें - यह वास्तव में क्या है कि डेकोरेटर करता है।
एक तरीका जिस तरह से मुझे यह पता चला है कि यह आपके AJAX डेटा के लिए स्टार्टर पॉइंट के रूप में एक पूर्ववर्ती रूप का उपयोग कर रहा है।
<form id="ajax_form" stye="display: none;">{% csrf_token %}</form>
तो फिर तुम JQuery के क्रमानुसार समारोह के माध्यम से अपने जावास्क्रिप्ट में इस का उपयोग कर सकते हैं:
var data = $('#ajax_form').serialize();
data += "&mydata=69";
तुम भी है कि गुप्त फ़ॉर्म के भीतर छिपे फ़ील्ड का उपयोग कर सकते हैं, ताकि आप स्ट्रिंग संयोजन का उपयोग करने के लिए बनाया की जरूरत नहीं है आपका पोस्ट डेटा
यदि आप @csrf_protect सजावट का उपयोग कर रहे हैं, तो सुनिश्चित करें कि फ़ॉर्म के साथ दोनों दृश्य और दृश्य को सजावटी का उपयोग करने के लिए डेटा पोस्ट किया जा रहा है।
मुझे एक समान समस्या थी। मेरे पास केवल पोस्ट व्यू पर @csrf_protect था, जिसने स्थानीय स्तर पर ठीक परीक्षण किया था, लेकिन जब मैं लाइव गया तो मुझे 403 सत्यापन मिला, जिसमें सजावटी को जोड़ दिया गया था, पेज व्यू को
- 1. अजाक्स, सीएसआरएफ और डेलेटे
- 2. एंजेंगिन में Django 1.3
- 3. Django 1.3
- 4. Django 1.3
- 5. Django-1.3 बीटा
- 6. अजाक्स कॉल Django
- 7. Django 1.2.4 सीएसआरएफ सत्यापन
- 8. Django 1.3: MEDIA_URL बनाम STATIC_URL
- 9. सीजेआरएफ jquery और $ .post में django 1.3
- 10. Django पर Django व्यवस्थापक में कस्टम फ़िल्टर 1.3 या
- 11. सीएसआरएफ सत्यापन विफल रहा। अनुरोध निरस्त django
- 12. Django अनुप्रयोग में अजाक्स आर्किटेक्चर
- 13. सीएसआरएफ ब्राउज़र सुरक्षा समस्या नहीं है?
- 14. Django 1.3 स्थैतिक फाइलें एप्लिकेशन डीआईआर
- 15. Django-nonrel ≤1.3 और Google App Engine
- 16. Pycharm + Django 1.3 + टेम्पलेट्स में STATIC_URL = मेरे Django 1.3 परियोजना में समाधान नहीं किया गया स्थिर संदर्भ
- 17. केकपीएचपी 1.3
- 18. Django लॉगिंग - लकड़हारा और अतिरिक्त संदर्भ पर Django 1.3
- 19. सीएसआरएफ सत्यापन विफल रहा, लेकिन केवल आईई 9
- 20. Django व्यवस्थापक सीएसआरएफ सत्यापन बढ़ाता है
- 21. django 1.3 में एक विस्तार दृश्य कैसे करें?
- 22. Django - अजाक्स मोडल लॉगिन/पंजीकरण
- 23. अजाक्स पोस्ट और Django Tastypie
- 24. Django django-admin.py कमांड समस्या
- 25. Apache 1.3
- 26. Django 1.3 UserProfile मिलते जुलते क्वैरी मौजूद नहीं है
- 27. Django Apache रीडायरेक्ट समस्या
- 28. Django StackedInline tinyMCE समस्या
- 29. Django pyodbc SQLSERVER समस्या
- 30. Django MongoDB समस्या
[सीएसआरएफ Django दस्तावेज़ीकरण] के अनुसार (https: // docs.djangoproject.com/en/dev/ref/contrib/csrf/#django.views।decorators.csrf.ensure_csrf_cookie), sure_cookie_csrf सजावट Django 1.4 के लिए नया है। –
यूप, sure_csrf_cookie सजावट Django 1.4 में उतरा। दुर्भाग्य से 1.3.1 में नहीं – bjunix