मैं लैरवेल 5 ऐप पर काम कर रहा हूं जिसमें सभी POST अनुरोधों के लिए डिफ़ॉल्ट रूप से सीएसआरएफ सुरक्षा सक्षम है। मुझे यह अतिरिक्त सुरक्षा पसंद है इसलिए मैं इसके साथ काम करने की कोशिश कर रहा हूं।
एक साधारण $.post()
अनुरोध करते समय मुझे 'Illuminate\Session\TokenMismatchException'
त्रुटि मिली क्योंकि आवश्यक फॉर्म इनपुट _token
पोस्ट डेटा से गायब था।
var userID = $("#userID").val();
$.post('/admin/users/delete-user', {id:userID}, function() {
// User deleted
});
मैं अपने CSRF टोकन मेरी शीर्षक में एक मेटा क्षेत्र के रूप में जमा है और आसानी से उपयोग कर इसे उपयोग कर सकते हैं:
var csrf_token = $('meta[name="csrf-token"]').attr('content');
क्या यह संभव है यहाँ सवाल में एक $ .post अनुरोध का एक उदाहरण है सभी आउटगोइंग $.post()
अनुरोधों पर जेसन डेटा में इसे जोड़ने के लिए? मैं हेडर का उपयोग करके की कोशिश की लेकिन Laravel उन्हें पहचान नहीं लगता था -
var csrf_token = $('meta[name="csrf-token"]').attr('content');
alert(csrf_token);
$.ajaxPrefilter(function(options, originalOptions, jqXHR){
if (options['type'].toLowerCase() === "post") {
jqXHR.setRequestHeader('X-CSRFToken', csrf_token);
}
});
मैं सही ढंग से समझते हो कि आप अपने डेटा वस्तु बनाना चाहते एक '_token' क्षेत्र है? (उदाहरण के लिए, 'विकल्प [' डेटा '] ._ token = csrf_token' जैसे कुछ?) यदि आपके पास कोई है तो एक कार्य अनुरोध का एक उदाहरण उपयोगी होगा। – apsillers
हां, बिल्कुल ... – NightMICU
अनुरोध कार्य करने के लिए मुझे सीधे पोस्ट डेटा पर टोकन जोड़ना होगा - इसलिए '{id: userID, '_token': टोकन}' – NightMICU