在 ASP.NET MVC 后的 ajax 中包含 antiforgerytoken

2024-02-06

我在使用 ajax 时遇到 AntiForgeryToken 问题。我正在使用 ASP.NET MVC 3。我尝试了以下解决方案jQuery Ajax 调用和 Html.AntiForgeryToken() https://stackoverflow.com/questions/4074199/jquery-ajax-calls-and-the-html-antiforgerytoken。使用该解决方案,现在正在传递令牌:

var data = { ... } // with token, key is '__RequestVerificationToken'

$.ajax({
        type: "POST",
        data: data,
        datatype: "json",
        traditional: true,
        contentType: "application/json; charset=utf-8",
        url: myURL,
        success: function (response) {
            ...
        },
        error: function (response) {
            ...
        }
    });

当我删除[ValidateAntiForgeryToken]属性只是为了查看数据(带有令牌)是否作为参数传递给控制器​​,我可以看到它们正在被传递。但由于某种原因,A required anti-forgery token was not supplied or was invalid.当我放回属性时,消息仍然弹出。

有任何想法吗?

EDIT

防伪令牌是在表单内生成的,但我没有使用提交操作来提交它。相反,我只是使用 jquery 获取令牌的值,然后尝试使用 ajax 发布该值。

这是包含令牌的表单,位于顶部母版页:

<form id="__AjaxAntiForgeryForm" action="#" method="post">
    @Html.AntiForgeryToken()
</form>

您错误地指定了contentType to application/json.

以下是其工作原理的示例。

控制器:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View();
    }

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Index(string someValue)
    {
        return Json(new { someValue = someValue });
    }
}

View:

@using (Html.BeginForm(null, null, FormMethod.Post, new { id = "__AjaxAntiForgeryForm" }))
{
    @Html.AntiForgeryToken()
}

<div id="myDiv" data-url="@Url.Action("Index", "Home")">
    Click me to send an AJAX request to a controller action
    decorated with the [ValidateAntiForgeryToken] attribute
</div>

<script type="text/javascript">
    $('#myDiv').submit(function () {
        var form = $('#__AjaxAntiForgeryForm');
        var token = $('input[name="__RequestVerificationToken"]', form).val();
        $.ajax({
            url: $(this).data('url'),
            type: 'POST',
            data: { 
                __RequestVerificationToken: token, 
                someValue: 'some value' 
            },
            success: function (result) {
                alert(result.someValue);
            }
        });
        return false;
    });
</script>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 ASP.NET MVC 后的 ajax 中包含 antiforgerytoken 的相关文章

随机推荐

  • htaccess / mod_expires - 缓存特定文件

    好吧 我检查了很多关于如何使用管理浏览器缓存的网站 htaccess文件 但我仍然不清楚 我想将特定文件缓存一个月 对于其余的 我希望它每次都能刷新 所以我尝试
  • Hibernate - 使用 all-delete-orphan 清除集合然后添加到它会导致 ConstraintViolationException

    我有这些实体 class Foo Set
  • 使用用户定义的注释生成编译器警告

    是否可以让编译器在遇到用户定义的注释时生成警告 类似的东西 Deprecated注解 Thanks 根据您最初的问题和评论 我假设您正在尝试执行以下操作 将代码标记为不完整 带有编译器警告 以便其他开发人员尚未使用它 稍后识别 IDE 中不
  • 在 python 端在 kivy 中分配 ids

    我正在使用猕猴桃 我想做的是拥有 想法 一个滑块和一个标签 其中包含网格布局中一行中滑块的当前值 现在获取布局很好 但让标签具有与滑块当前值相同的文本值是很棘手的 我尝试使用字符串连接来引用与其配对的滑块具有相同数字后缀的标签 我认为我遇到
  • 跨度文本填充增加跨度大小

    我有以下跨度 span style border solid width 100px hello world span 在我看来 跨度的总宽度是根据填充大小而增加的 有没有办法防止跨度大小增加并将文本填充到右侧 不知道你的 padding
  • Linux 中的缓冲区和高速缓冲存储器有什么区别?

    对我来说 不清楚这两个 Linux 内存概念之间有什么区别 buffer and cache 我已读完这个帖子 https stackoverflow com questions 3192579 buffer and cache diffe
  • 在Python中将数组的数组转换为json[重复]

    这个问题在这里已经有答案了 我有一个数组数组 它 是从数据库查询中获取的SQL炼金术我想做两件事 我想获取列的名称 或类似的名称 从表中选择全名 AS 姓名 我想将最终产品转换为 json 对象数组 以便我可以在前端使用它 我已经搜索了几个
  • 将 .net 方法公开为 Excel 函数?

    我有一组计算方法位于 Net DLL 中 我想让 Excel 2003 用户可以使用这些方法 以便他们可以在电子表格中使用它们 例如我的 net方法 public double CalculateSomethingReallyComplex
  • 查找二进制中类符号的来源

    我有一个有趣的问题 我收到的崩溃日志引用了我的应用程序中名为 NRURLProtocol 的类 特别是在文件 NRURLProtocol m 中 根据崩溃日志 该日志存在于我的应用程序中 而不是存在于 iOS 框架中 但是 我的项目中没有
  • VSCODE 笔记本 - 是否可以仅显示大纲中的 Markdown 标题?

    我使用 Markdown 标题在笔记本中导航 但我也倾向于制作大量 非标题 Markdown 笔记 两者都出现在大纲中 随着笔记本变大 找到正确的标题变得相当困难 有没有办法抑制大纲中显示的普通降价单元格 我关注了 github 和 at
  • 如何将与字段关联的对象列表检索到实体类中?

    当我通过任何字段找到客户时 一切都很顺利 我得到了带有返回的全局对象的 JSON 我正在编写代码来查找Customer由于他们lastName 客户实体有一个对象 其中的字段lastName被宣布 因此 我希望我的端点像第一种情况一样返回客
  • 从 .NET 中的堆栈帧获取参数值?

    我希望能够从 NET中的堆栈帧中获取所有参数值 有点像在 Visual Studio 调试器中查看调用堆栈中的值的方式 我的方法集中于使用堆栈框架类 http msdn microsoft com en us library system
  • 从 iPad (目标 C) 到 MVP Web API (C#) 的时区映射

    我有一个 Web 服务 MVC Web API 我在其中存储 UTC 格式的日期时间值 iPad 与 API 进行通信 并将传递标头中的时区设置 API 会根据 iPad 发送的时区将 UTC 值转换为正确的本地时间 看来我需要 Objec
  • 如何对齐多个表单元素?

    I ve no clue at design and I m trying to get a simple HTML form to look like this 基本上 它是一个表格three输入字段和one提交按钮 关于输入字段 有上面
  • 使用 Complete.ly 或 typeahead 检测并禁用移动设备上的自动完成功能

    在我的项目中我想使用 Complete ly 参见http complete ly appspot com http complete ly appspot com 或 typeahead js 参见http twitter github
  • javascript - 将数组转换为字符串,同时保留括号

    我有一个多维数组 如下所示 var myArray 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 我希望将其内容放在 div 中 以便可以轻松复制和粘贴 然而 当我这样做时 var x document g
  • 在 Visual Studio 中监视调用堆栈大小

    有没有办法监视 Visual Studio 中的调用堆栈大小 运行时会提供一个调用堆栈窗口 但不显示堆栈的大小 我正在使用 C 并面临堆栈溢出问题 我知道我正在使用的某些递归函数可能有问题 但在解决这些问题之前 我想监视调用堆栈大小以了解发
  • 构建 Apache Zeppelin 时出现错误

    我已经用cloudera 设置了hadoop 我想安装 zeppelin 来连接 hive 并为我的查询构建 UI 使用以下命令构建 zeppelin 命令时 sudo mvn clean package Pspark 1 3 Dspark
  • 由 WPF 应用程序托管时,Win32 应用程序不受 dpi 设置的影响

    我正在 wpf 应用程序中作为一个孩子启动一个旧的 win32 应用程序 问题是 win32 应用程序作为 wpf 应用程序的子应用程序运行时会忽略 dpi 设置 当 win32 应用程序在自己的窗口中启动时 dpi 设置可以达到预期的效果
  • 在 ASP.NET MVC 后的 ajax 中包含 antiforgerytoken

    我在使用 ajax 时遇到 AntiForgeryToken 问题 我正在使用 ASP NET MVC 3 我尝试了以下解决方案jQuery Ajax 调用和 Html AntiForgeryToken https stackoverflo