我正试图使用防伪机制来保护我的ajax帖子。
首先,我在视图中添加了防伪造令牌助手方法调用
@Html.AntiForgeryToken()然后调整了jquery的post调用。
var values = $(this).serialize() + "&__RequestVerificationToken=" + $("input[name='__RequestVerificationToken']").val();
$.post(url, values)
.success(page.submitSuccess)
.error(page.submitError)
.complete(page.submitComplete);当然,我用ValidateAntiForgeryToken来修饰我的动作方法
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(ProjectCreateCommand command)
{
....
}但是在提交表单之后,它抛出了A所需的防伪令牌,没有提供或者是无效的错误。
我删除了令牌cookie,也重新启动了浏览器。
我漏掉了什么吗?
发布于 2012-06-05 12:29:36
如果使用$(form).serialize();,它将序列化所有输入标记,因此可以通过$.post jquery方法来实现。试着做这样的事情:
$("#you_form").submit(function (e) {
e.preventDefault();
$.ajax({
type: 'POST',
url: $(this).attr("action"), // get url from action attribute, your route setted by the Html.BeginForm()
data: $(this).serialize(), // serialize all input tags from this form
success: page.submitSuccess;
});
});使用@Html.AntiForgeryToken()没有问题,序列化方法会将这些添加到一起。
看看这个链接:http://api.jquery.com/jQuery.post/
https://stackoverflow.com/questions/10896362
复制相似问题