Nasıl JSON verilerini kullanarak gönderirken bir AntiForgeryToken tedarik edebilirim dolar.ajax?
Bu yazının aşağıdaki gibidir: kodu kullanıyorum
İlk bir denetleyicisi eylem için doğru değerler ile dizi değişken doldururum. Sadece javascript için aşağıdaki satırı ekleyerek çok straigtforward olması gerektiğini düşünüyorum aşağıdaki kodu kullanarak:
data["__RequestVerificationToken"] = $('[name=__RequestVerificationToken]').val();
<%= Html.AntiForgeryToken() %>
hakkı onun evinde ve eylem [ValidateAntiForgeryToken]
vardır
Ama benim denetleyicisi eylem diyor: "sahte token" . Geçersiz
Burada yanlış ne yapıyorum?
Kod
data["fiscalyear"] = fiscalyear;
data["subgeography"] = $(list).parent().find('input[name=subGeography]').val();
data["territories"] = new Array();
$(items).each(function() {
data["territories"].push($(this).find('input[name=territory]').val());
});
if (url != null) {
$.ajax(
{
dataType: 'JSON',
contentType: 'application/json; charset=utf-8',
url: url,
type: 'POST',
context: document.body,
data: JSON.stringify(data),
success: function() { refresh(); }
});
}
CEVAP
Sorunun ne olduğunu [ValidateAntiForgeryToken]
ile işaretlenmiş olan bu isteği işlemek için gereken ve o denetleyici eylemi parametre __RequestVerificationToken
olarak adlandırılan bu istekle birlikte Gönderildi umuyor.
Bu parametre JSON gösterimi için form dönüştüren ve bu özel durum çok JSON.stringify(data)
kullandığınız haberi yok.
İki olası çözümleri burada görebilirsiniz:
1 numara: isteğiniz parametreleri göndermek için JSON
yerine x-www-form-urlencoded
Kullanın:
data["__RequestVerificationToken"] = $('[name=__RequestVerificationToken]').val();
data["fiscalyear"] = fiscalyear;
// ... other data if necessary
$.ajax({
url: url,
type: 'POST',
context: document.body,
data: data,
success: function() { refresh(); }
});
Sayı 2: iki parametre içine isteği Ayrı:
data["fiscalyear"] = fiscalyear;
// ... other data if necessary
var token = $('[name=__RequestVerificationToken]').val();
$.ajax({
url: url,
type: 'POST',
context: document.body,
data: { __RequestVerificationToken: token, jsonRequest: JSON.stringify(data) },
success: function() { refresh(); }
});
Her durumda __RequestVerificationToken
değer göndermek gerekir.
Nasıl ayrıştırma kullanarak Node.js JS...
Nasıl bir WCF servisinden JSON temiz i...
Nasıl bir HTML öğesi boş jQuery kullan...
Nasıl görünümü alıntılar BibTeX kullan...
Nasıl kullanarak/Catch olmadan bir diz...