यह समस्या डेविस से संबंधित नहीं है। संक्षेप में, रेल 3.0.4 के बाद से यह आवश्यक है कि प्रत्येक गैर-जीईटी अनुरोध में सीएसआरएफ टोकन होना चाहिए, अन्यथा सत्र साफ़ हो जाता है।
इस दुविधा में दो बड़े बदलाव, व्यवहार जब CSRF सुरक्षा में विफल रहता है बदल गया है और टोकन अब सभी गैर प्राप्त अनुरोधों के लिए आवश्यक हो जाएगा रहे हैं।
इस पैच लागू करने के बाद CSRF अनुरोध विफल रहा है अब और नहीं HTTP 500 त्रुटियों, बजाय सत्र रीसेट कर दिया जाएगा उत्पन्न होगा। उपयोगकर्ता अपने नियंत्रकों में handle_unverified_request को ओवरराइड करके व्यवहार को ओवरराइड कर सकते हैं।
अधिक यहाँ विवरण: http://weblog.rubyonrails.org/2011/2/8/csrf-protection-bypass-in-ruby-on-rails
jQuery अपने AJAX के साथ उपयोग करने के लिए टुकड़ा का अनुरोध करता है
$(document).ajaxSend(function(e, xhr, options) {
var token = $("meta[name='csrf-token']").attr("content");
xhr.setRequestHeader("X-CSRF-Token", token);
});
आप प्रोटोटाइप का उपयोग कर रहे हैं, तो आप निम्न कोड की आवश्यकता होगी:
Ajax.Responders.register({
onCreate: function(request) {
var csrf_meta_tag = $$('meta[name=csrf-token]')[0];
if (csrf_meta_tag) {
var header = 'X-CSRF-Token',
token = csrf_meta_tag.readAttribute('content');
if (!request.options.requestHeaders) {
request.options.requestHeaders = {};
}
request.options.requestHeaders[header] = token;
}
}
});
स्रोत
2011-03-16 13:53:55
ठीक है .. मैं थोड़ी देर के लिए 3.0.3 रखूंगा .. thanx! –