gpt4 book ai didi

asp.net-mvc - ValidateAntiForgeryToken 因 jQuery ajax 表单提交而失败

转载 作者:行者123 更新时间:2023-12-02 07:57:04 25 4
gpt4 key购买 nike

我有一个 HTML 表单,我向其中动态添加一个文本字段,并通过 jQuery 向 ASP.NET MVC Controller 执行该表单的 POST 请求。

如果我在 Controller 操作上没有 ValidateAntiForgeryToken 属性的情况下调用 POST 请求,则它可以正常工作。但是,当我将 ValidateAntiForgeryToken 属性添加到操作时,出现以下异常:

“未提供所需的防伪 token 或该 token 无效。”

有人知道为什么会这样吗?

值得注意的是,cookie 中的 token id 似乎与表单中呈现的 token 完​​全不同。为什么这些会有所不同?

Action :

[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>

渲染防伪 token 的原始 View :

<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 时指定了自定义盐,您还需要将此盐提供给 ValidateAntiForgeryToken 属性。

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

关于asp.net-mvc - ValidateAntiForgeryToken 因 jQuery ajax 表单提交而失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2067901/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com