将请求验证令牌传递给 asp.net mvc 操作时如何解决错误?

学生

我在我的 asp.net mvc 应用程序中使用 datatables.net 来创建和填充表。这样做时,我遇到了一个问题,即当我传递 requestverification 令牌时,出现错误并且没有创建和填充表。如果我不传递任何令牌并从操作方法中删除 [ValidateAntiForgeryToken] 属性,则不会出现任何问题。

在调试时我发现令牌是空值

var head = request.Headers.Get("__RequestVerificationToken");

下面是我的代码

$(document).ready(function () {

            var token = $('[name=__RequestVerificationToken]').val();

            //jQuery DataTables initialization
            var oTable = $('#myTable').DataTable({

                "ajax": {
                    "url": "/myapplication/MyReport/LoadReport",
                    "type": "POST",
                    "datatype": "json",
                    "headers" : { '__RequestVerificationToken': token }
                        },
                },
                "columns": [
                    { "data": "Store", "name": "Store" },
                    { "data": "Form", "name": "Form" },
                    { "data": "Order", "name": "Order" },
                    { "data": "Sku", "name": "Sku" },
                    { "data": "RequestedDate", "name": "RequestedDate" },
                    { "data": "Reason", "name": "Reason" }
                ],
                "responsive": true,
                "rowReorder": {
                    selector: 'td:nth-child(2)'
                },
                "serverSide": "true",
                "order": [0, "asc"],
                "processing": "true",
                "language": {
                    "processing": "Loading. Please wait..."
                },
                "dom": "<'row'<'col-sm-6'l><'col-sm-6'p>>" +
                    "<'row'<'col-sm-12'tr>>" +
                    "<'row'<'col-sm-4'i>>"
            });

        });
马可

该文档向您展示了获取这些令牌的好方法,并且还表明您存在概念错误。Asp.net 不生成 1令牌,而是生成2 个令牌。一个存储在表单中,另一个存储在 cookie 中。您需要将两者都发送回服务器,以满足防伪要求。

您可以使用此 razor 函数来构建令牌:

<script>
    @functions{
            public string TokenHeaderValue()
            {
                string cookieToken, formToken;
                AntiForgery.GetTokens(null, out cookieToken, out formToken);
                return cookieToken + ":" + formToken;                
            }
        }
</script>

然后将此值添加到您的标题中:

headers: {
        'RequestVerificationToken': '@TokenHeaderValue()'
}

文档:https : //docs.microsoft.com/en-us/aspnet/web-api/overview/security/preventing-cross-site-request-forgery-csrf-attacks

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

ASP.Net MVC 5在表单发布时将初始模型参数传递给控制器

编辑时的ASP.NET MVC远程验证逻辑

单元测试和多个参数传递给Asp.Net Core MVC中的构造函数,将令牌传递给每个请求

在ASP.NET MVC中请求URL时获取404

在ASP.NET MVC 5中调用SOAP Web服务时,如何解决502 Bad Gateway错误?

如何将<div>值传递给ASP.Net MVC中的另一个Controller?

针对Azure AD注销ASP.NET Core MVC应用程序时如何解决错误404?

如何将元组从JavaScript传递到ASP.NET MVC控制器操作

ASP.NET MVC3验证类型名称错误

asp.NET MVC将信息传递给PartialView

ASP.NET MVC-无法将string []值传递给另一个Controller操作

ASP .NET MVC KendoUI,如何将可观察的viewModel属性传递给MVC Action?

如何解决此错误链接到asp.net mvc中的索引和部分视图?

如何将ID从角度视图传递给ASP.NET MVC控制器?

ASP.NET MVC处理请求错误

将JSON传递给ASP.Net MVC操作

如何解决MVC验证错误

ASP.NET MVC 验证错误未显示

将逗号分隔值传递给 ASP.NET MVC 操作方法

如何使用 Jquery 和 ajax 将 id 传递给 MVC 控制器 [ASP.NET]

asp.net mvc 如何将视图模型和输入文本传递给控制器?

如何将多个集合作为参数从 ASP.NET MVC 中的控制器传递给视图?

来自 ajax 调用 asp.net MVC 模型的验证错误

如何解决错误:Asp.Net 请求中出现意外标记“<”?

如何将特定行中的两个值传递给 Controller asp.net core mvc?

如何将对象传递给 ASP.NET Core MVC 中的操作方法

如何将两个参数传递给 ASP.NET Core MVC 中的控制器?

如何解决 ASP.NET Core MVC 中的 428C9 错误?

MVC ASP.NET Core 中的验证字段时出错