我在我的应用程序的服务器端使用microsoft asp.net mvc,并在客户端使用jquery。 在我的应用程序中,我需要在加载特定页面时做一些事情。我需要向服务器端发送请求并做一些事情。因为我在客户端执行此操作,所以每个用户都可以看到我的请求,我想确保发出请求的用户不是请求特定页面的用户。到目前为止,我使用请求伪造令牌,但在过去一个月我跟踪我的应用程序面临的异常和错误,我看到了所需的防伪cookie" myCookieName"不在场。首先,如果有人可以告诉我这是我的错误,第二,如果有人可以建议另一种解决方案。
这是我的HTML代码:
@using (Html.BeginForm("action", "controller", FormMethod.Post, new { id = "myForm" }))
{
@Html.AntiForgeryToken()
@Html.HiddenFor(m=>m.Id)
}
这是我的java脚本代码:
(function() {
$(function() {
var $form = $("#myForm");
$form.ajaxSubmit({
success: function () {
$form.remove();
},
error: function() {
$form.remove();
}
});
});
}());
这是我的MVC代码:
[HttpPost]
[ValidateAntiForgeryToken]
public JsonResult Action(int id)
{
//Do stuff
}
答案 0 :(得分:0)
你ajax不包括AntiForgery Token
<script type="text/javascript">
$('#myForm').submit(function () {
var $form = $('#myForm');
var token = $('input[name="__RequestVerificationToken"]', $form).val();
$.ajax({
url: $(this).data('url'),
type: 'POST',
data: {
__RequestVerificationToken: token,
someValue: 'some value'
},
success: function (result) {
alert(result.someValue);
}
});
return false;
});
</script>