加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 使用jQuery ajax表单提交失败的ValidateAntiForg

发布时间:2020-12-16 06:42:38 所属栏目:asp.Net 来源:网络整理
导读:我有一个 HTML表单,我动态添加一个文本字段,并通过jQuery对ASP.NET MVC控制器执行该表单的POST请求. 如果我在控制器操作上调用没有ValidateAntiForgeryToken属性的POST请求,它可以正常工作.但是,当我将ValidateAntiForgeryToken属性添加到操作时,我得到以下
我有一个 HTML表单,我动态添加一个文本字段,并通过jQuery对ASP.NET MVC控制器执行该表单的POST请求.

如果我在控制器操作上调用没有ValidateAntiForgeryToken属性的POST请求,它可以正常工作.但是,当我将ValidateAntiForgeryToken属性添加到操作时,我得到以下异常:

“未提供所需的防伪标记或无效.”

有没有人想到为什么会这样?

需要注意的是,cookie中的令牌ID似乎与表单中呈现的令牌完??全不同.为什么这些会有所不同?

那个行动:

[AcceptVerbs(HttpVerbs.Post)]
[ValidateAntiForgeryToken]
public string MyAction(Guid id,Dto dto)
{            
  //return JSON;
}

表格(呈现):

<form id="slider" class="fc" method="post" action="/controller/myaction/" name="tabEdit">
  <span id="slider_previous" class="sprite" tabindex="0" title="foo">Previous</span>
  <input type="hidden" value="mzyg7UWQrHwafoSuoJBvwfraQEtCTAmM9QHYeyMSrAHFHG10BNXM+I2yNgz8zQ8yu/E43eF3yMuHX7YIQwmK3Q==" name="__RequestVerificationToken"/>
  <div id="sliderWrap" style="width: 31.243%;">
    <ul class="sliderList">
      <li id="ID_3d031daf-a7f9-46f2-b4b9-7c9fc6560e3d">
      </li>
      <li id="ID_78b61634-d88a-4f33-8e48-e0655ad8a958" class="current">
        <input class="sliderInput" type="text" value="" name="Bar"/>
        <a class="sprite" href="/a/b/78b61634-d88a-4f33-8e48-e0655ad8a958">Delete</a>
      </li>
    </ul>
  </div>
<span id="slider_addNew" class="sprite" tabindex="0" title="Add new">New</span>
<span id="slider_next" class="sprite" tabindex="0" title="See next">Next</span>
</form>

渲染防伪标记的原始视图:

<form id="slider" class="fc" method="post" action="/controller/myaction/" name="tabEdit">
<%=Html.AntiForgeryToken(OurNamespace.MVC.Constants.SaltValue) %>
  <ul class="noJs">
<!-- etc -->       
  </ul>
</form>

解决方法

您在生成AntiForgeryToken时指定自定义salt,您还需要将此salt提供给ValidateAntiForgeryToken属性.

[ValidateAntiForgeryToken(Salt=OurNamespace.MVC.Constants.SaltValue)]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读