【发布时间】:2015-02-14 02:51:48
【问题描述】:
我找到了很多示例来演示如何将AntiForgeryToken 添加到Ajax 调用POST 提交方法。正如标题所示,我的需要是提交表单,而不是通过ajax 调用。相反,我只是使用 jQuery submit() 函数。
我在 razor 视图文件中的内容如下(注意:我使用的是 html 字符串文字,因为这个特定的 DOM 需要稍后动态附加到单独的元素):
var html =
"<form id='exportPdfForm' action='" + exportUrl + "' method='post'>" +
"<input type='hidden' id='exportContent'>" +
"<input type='hidden' id='__RequestVerificationToken' value='@Html.AntiForgeryToken()'>" +
"</form>";
而且,很明显,我正在使用下面的 jQuery 来提交这个表单:
$("#exportPdfForm").submit();
另外,使用 DOM Explorer 我可以看到 AntiForgeryToken 值正确到位:
但是,当我实际提交表单时,我仍然遇到 The required anti-forgery form field "__RequestVerificationToken" is not present 错误。我查看了其他几个问答,但似乎找不到任何可以阐明我的问题的内容。
我是否遗漏了一些明显的东西或做错了什么?
编辑(解决方案)
将__RequestVerificationToken 分配给name 属性将修复它:
<input type='hidden' name='__RequestVerificationToken' value='...'>
【问题讨论】:
标签: c# forms post antiforgerytoken