के माध्यम से FormData के साथ AntiForgeryToken (CSRF) को कैसे भेजें, इसलिए मैं POST
फ़ाइल AntiForgeryToken
के साथ AJAX के माध्यम से अपलोड करना चाहता हूं।jquery AJAX
देखें
@using (Html.BeginForm("Upload", "RX", FormMethod.Post, new {id = "frmRXUpload", enctype = "multipart/form-data"}))
{
@Html.AntiForgeryToken()
@Html.TextBoxFor(m => m.RXFile, new {.type = "file"})
...rest of code here
}
<script>
$(document).ready(function(){
$('#btnRXUpload').click(function() {
var form = $('#frmRXUpload')
if (form.valid()) {
var formData = new FormData(form);
formData.append('files', $('#frmRXUpload input[type="file"]')[0].files[0]);
formData.append('__RequestVerificationToken', fnGetToken());
$.ajax({
type: 'POST',
url: '/RX/Upload',
data: formData,
contentType: false,
processData: false
})
}
})
})
</script>
नियंत्रक
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Upload()
{
//rest of code here
}
मैं
विरोधी जालसाजी टोकन decrypted नहीं किया जा सका मिलती है: यहाँ मेरी कोड है। यदि यह एप्लिकेशन वेब फार्म या क्लस्टर
फिडलर के माध्यम से त्रुटि द्वारा होस्ट किया गया है। इस मुद्दे को हल करने का कोई विचार है?
<script>
$(document).ready(function(){
$('#btnRXUpload').click(function() {
var form = $('#frmRXUpload')
if (form.valid()) {
var formData = new FormData(form.get(0)); //add .get(0)
formData.append('files', $('#frmRXUpload input[type="file"]')[0].files[0]);
$.ajax({
type: 'POST',
url: '/RX/Upload',
data: formData,
contentType: false,
processData: false
})
}
})
})
</script>
क्या है 'fnGetToken()'? –
क्या यह व्यवहार बदलता है यदि एप्लिकेशन वेब फार्म या क्लस्टर पर होस्ट नहीं किया गया है? गैर AJAX अनुरोध काम करते हैं? –
@StephenMuecke: टोकन स्ट्रिंग प्राप्त करने के लिए एक फ़ंक्शन – warheat1990