ASP.NET MVC AJAX POST ValidateAntiForgeryToken
我的代码中出现了一个内部服务器错误:ASP.NET MVC AJAX POST ValidateAntiForgeryToken,ajax,asp.net-mvc,antiforgerytoken,Ajax,Asp.net Mvc,Antiforgerytoken,我的代码中出现了一个内部服务器错误: @using (Html.BeginForm("", "Manage", FormMethod.Post, new { role = "form"})) { @Html.AntiForgeryToken() } <script> function Like(id) { var requestData = { profileId: id, __RequestVerificationToken: $('
@using (Html.BeginForm("", "Manage", FormMethod.Post, new { role = "form"}))
{
@Html.AntiForgeryToken()
}
<script>
function Like(id) {
var requestData = {
profileId: id,
__RequestVerificationToken: $('[name=__RequestVerificationToken]').val(),
};
$.ajax({
url: '/Manage/Like',
type: 'POST',
data: JSON.stringify(requestData),
dataType: "json",
contentType: 'application/json; charset=utf-8',
error: function (xhr) { alert('Error: ' + xhr.statusText); },
success: function (result) {},
async: true,
processData: false
});
}
</script>
如果我删除[ValidateAntiForgeryToken],一切正常,但我会失去安全性。如何修复内部服务器错误
我在fiddler SyntaxView 2请求中看到:
/管理/喜欢
{profileId:13,请求验证项:jH2ofYlcTiHl8lixW(Anehog5KWRH5XL43LQFGKDFH55JX-X5CMZ4RFPTBDFU92OQSTM7ZSOP83LDFBXMDIIELYZKFBYFCXJUP-5MWYKZCQZJ2GY6QW0IQOTLSQADJFSZONYQM2MD42CBITZW2}
/管理
__RequestVerificationToken=MNiKOJHZg7BGaTNccOjrR2Obf\U NPHKFCWIPZVBUL53G368N5EUZB4Y1HTH47VKG3V3MHFXKJYZDZ6IPEPQ7JPEXGARTLJ6VVV74B8ZQBP4BYJR4RCZ4SHANM3WHB6WAXALCSNFVJT8C98XKDA5W2。问题在这里 删除JSON.stringify
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Like(string profileId)
{ ... }
function Like(id) {
var form = $('form');
var token = $('input[name="__RequestVerificationToken"]', form).val();
$.ajax({
url: '/Manage/Like',
type: 'POST',
data: { __RequestVerificationToken: token, profileID: id },
error: function (xhr) { alert('Error: ' + xhr.statusText); },
success: function (result) {},
async: true,
processData: false
});
}