首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ajax post抛出所需的防伪造令牌未提供或无效

Ajax post抛出所需的防伪造令牌未提供或无效
EN

Stack Overflow用户
提问于 2012-06-05 11:18:51
回答 1查看 2.6K关注 0票数 1

我正试图使用防伪机制来保护我的ajax帖子。

首先,我在视图中添加了防伪造令牌助手方法调用

代码语言:javascript
复制
@Html.AntiForgeryToken()

然后调整了jquery的post调用。

代码语言:javascript
复制
var values = $(this).serialize() + "&__RequestVerificationToken=" + $("input[name='__RequestVerificationToken']").val();

$.post(url, values)
    .success(page.submitSuccess)
    .error(page.submitError)
    .complete(page.submitComplete);

当然,我用ValidateAntiForgeryToken来修饰我的动作方法

代码语言:javascript
复制
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(ProjectCreateCommand command)
{
    ....
}

但是在提交表单之后,它抛出了A所需的防伪令牌,没有提供或者是无效的错误。

我删除了令牌cookie,也重新启动了浏览器。

我漏掉了什么吗?

EN

回答 1

Stack Overflow用户

发布于 2012-06-05 12:29:36

如果使用$(form).serialize();,它将序列化所有输入标记,因此可以通过$.post jquery方法来实现。试着做这样的事情:

代码语言:javascript
复制
$("#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/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10896362

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档