我在ASP.NET MVC4應用程序中工作,因此,通過ajax發送到服務器的所有陣列數據都必須使用traditional
選項發送。 (對於POST變量,沒有[]
)。
問題是,我也有一個過濾器設置,要求每個ajax POST都發送AntiforgeryToken。
我一直在使用這個固定的ajaxPrefilter
這樣的:
$.ajaxPrefilter(function (options, originalOptions) {
if (options.type.toUpperCase() == "POST") {
options.data = $.param($.extend(originalOptions.data, { __RequestVerificationToken: "antiForgeryToken" }));
}
});
這個偉大的工程,並增加了__RequestVerificationToken
所有訊息。 但是,它也會導致我的數據根據traditional
標誌未被參數化。
是否有人知道如何修改我的前置過濾器來解決這個問題?
例子可以在這裏找到: http://jsbin.com/IxoKIKA/2/edit
你爲什麼使用反僞造令牌的AJAX?這完全是無關緊要的。改爲使用適當的頭部來驗證它的ajax。 –
@BenjaminGruenbaum有一個'IFilterProvider',它爲所有POST請求添加一個'ValidateAntiForgeryTokenAttribute'',包括ajax調用。我想我可以檢查特定的POST是否是XHR調用,而不是基於此添加它。 – Kippie