AJAX 将不带表单的 ValidateAntiForgeryToken 发布到 MVC 操作方法

2024-03-09

我一直在寻找如何在 SO 上执行此操作的示例,据我所知,我已经尝试了所有我能找到的示例,但到目前为止没有成功。我尝试根据我的场景更改一些实现,但到目前为止也失败了。

我的页面上有这个 _layout.cshtml 所以我总是有一个可用的令牌:

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

我的 JavaScript utils 文件中也有这个方法:

AddAntiForgeryToken = function (data) {
    data.__RequestVerificationToken = $('#__AjaxAntiForgeryForm input[name=__RequestVerificationToken]').val();
    return data;
};

这一切都按预期工作,我得到了一个防伪令牌。我的实际发布代码是:

myPage.saveData = function() {
    var saveUrl = '/exercises/PostData';

    var myData = JSON.stringify(myPage.contextsArrays);

    $.ajax({
        type: 'POST',
        async: false,
        url: saveUrl,
        data: AddAntiForgeryToken({ myResults: myData }),
        success: function () {
            alert('saved');
        },
        dataType: 'json',
        contentType: "application/json; charset=utf-8"
    });
};

我的操作方法如下所示:

    [HttpPost, ValidateAntiForgeryToken, JsonExceptionFilter]
    public JsonResult PostData(List<ResultsDc> myResults)
    {
        return Json(_apiClient.SubmitResults(myResults));
    }

我一直在尝试使用各种实现来测试这一点,并且响应始终是:

{"errorMessage":"The required anti-forgery form field \"__RequestVerificationToken\" is not present."}

我没有发布表单,它只是一个数据数组,但检查实际发布的数据,Json 看起来不正确(全部已编码),但 __RequestVerificationToken 参数名称在那里,并且令牌值也存在。

我现在对这一切感到非常困惑,无法找到发送令牌以便调用我的 MVC 操作的正确方法。如果我删除ValidateAntiForgeryToken属性并且有JSON.stringify(myPage.contextsArrays);作为数据,json 看起来是正确的(未编码)并且映射得很好。

如何在没有表格的情况下正确发布此令牌?


纸板开发商再次出击。

我所要做的就是删除:

contentType: "application/json; charset=utf-8"

通过这样做(这会改变发出的 post 请求的类型),获取实际数据属性的 Json 内容以正确绑定到您的T型号类型DO NOT JSON.stringify()数据。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AJAX 将不带表单的 ValidateAntiForgeryToken 发布到 MVC 操作方法 的相关文章

随机推荐

  • jqGrid 显示用于行内编辑的“编辑”图标

    我正在使用带有内联编辑选项的 jqGrid 如果单元格没有任何值 我想显示一个编辑图标 所以我写了一个格式化程序 function aFormatter cellvalue options row if cellvalue null ret
  • 使用 JavaScript 将 div 定位在圆圈中

    我正在尝试定位15div元素均匀地分布在半径为150px 我正在使用以下代码 它似乎给出了一个重叠的奇怪的偏心椭圆 Fiddle http jsfiddle net 4qt5uaz1 3 Hold a global reference to
  • 如何从 jQuery 对象中删除元素?

    Code div d1 div div d2 div 我用过j add 添加元素到j 但是我该如何删除 d1 from j j remove 不起作用 因为它删除了 d1 and j length仍然是2 谢谢大家 div d1 div
  • 从IP地址获取地理位置[重复]

    这个问题在这里已经有答案了 可能的重复 在 Java 中获取地理位置的最佳方法 https stackoverflow com questions 1415851 best way to get geo location in java j
  • 避免 .NET Native 错误

    我去年 兼职 将现有 且成功的 Windows 8 1 应用程序迁移到 Windows 10 UWP 现在 就在将其发布到商店之前 我在 发布 构建模式 触发 NET Native 下测试了该应用程序 一切似乎都有效 直到我 偶然 注意到一
  • 嵌套 Python 模块导入的最佳实践

    假设我有一个 Python 模块 main py import math from the standard Python library import my own module foo math cos bar 我还需要在 my own
  • 如何使用 Linux 命令获取可用内存的百分比? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我想使用 Linux 命令行获取以百分比形式报告的可用内存 我用的是free命令 但这只是给我数字 并且没有百分比选项 使用free命令 free t
  • ssl.get_server_certificate 适用于具有 SNI(服务器名称指示)的站点

    我正在尝试获取 badssl com 子域的服务器证书 例如https expired badssl com https expired badssl com import ssl ssl get server certificate ex
  • 如何在SML中使用IntInf或LargeInt?

    我想通过此链接中的 pow 等函数在 SML 中执行大整数计算 http www standardml org Basis int inf html IntInf STR SPEC http www standardml org Basis
  • 检测图像中线条的起点和终点(numpy 数组)

    我有一个像下面这样的图像 我想要的是获取每个线段的起点和终点的坐标 实际上我的想法是考虑这样一个事实 每个极值点应该只有一个属于其邻域中的线段的点 而所有其他点应该至少有 2 个 不幸的是 该线的厚度不等于一个像素 因此这一推理不成立 这是
  • 如何使用实体关系不直接的休眠标准连接多个表?

    我有三个实体 那些是 Entity public class Organization Id private long id Column private String name Entity public class Book Id pr
  • 活跃用户 SQL 查询

    我正在尝试绘制网络应用程序中的活跃用户图表 我的数据库由两个主表组成 user and task task has a user id 我的定义活跃用户 is 在给定结束日期后两周内创建了 2 个以上任务的用户 因此 我需要一个 SQL 查
  • 在ocaml中编写多行函数

    我无法理解如何在 ocaml 中编写函数 因为我只编写了不需要用 分隔的多行的递归函数 我正在尝试创建一个函数 给定一个整数 n 返回一个充满零且对角线上只有一个的矩阵 因此大小为 n 的单位矩阵 我是函数式编程和 ocaml 的新手 所以
  • Flutter - 在 Android 上访问隐藏方法 Lsun/misc/Unsafe 错误

    我收到 Flutter 项目的错误 我将开始一一停用插件 并希望找出其中之一是否导致了问题 在那之前 我会将其留在这里 以防有人提出建议 Accessing hidden method Lsun misc Unsafe gt putObje
  • PowerShell:带有 ConvertTo-XML 输出的自定义属性 XML 标签

    我正在 PowerShell 中创建一个新对象 使用哈希表来设置属性值 然后我想使用 ConvertTo XML 方法将对象导出为 XML 格式 hash Processor Intel Disk 500GB Server ABC Seri
  • 如何使用 opencv python 将黑色更改为红色

    你怎么能用Python做到这一点 我在这条线上遇到了问题 img rgb Set mask cv2 Scalar 0 0 255 这是代码 import numpy as np import imutils import cv2 img r
  • 在 C 中将匿名结构作为参数传递

    我有以下 c 行 为了可读性而添加回车符 它们不在代码中 define i2c write slave addr reg addr len data ptr twi master write MPU TWI addr reg addr ad
  • 如何移动文件?

    我正在针对 SourceForge SVN 存储库使用 TortoiseSVN 我想将文件从一个文件夹移动到另一个文件夹以维护其修订历史记录 这可能吗 如果是这样 你会怎么做 我当前的策略是将文件复制到新文件夹中并将其签入 然后从当前文件夹
  • 优化 S3 下载大量小文件

    我目前使用转账管理器 https docs aws amazon com AWSJavaSDK latest javadoc com amazonaws services s3 transfer TransferManager html从
  • AJAX 将不带表单的 ValidateAntiForgeryToken 发布到 MVC 操作方法

    我一直在寻找如何在 SO 上执行此操作的示例 据我所知 我已经尝试了所有我能找到的示例 但到目前为止没有成功 我尝试根据我的场景更改一些实现 但到目前为止也失败了 我的页面上有这个 layout cshtml 所以我总是有一个可用的令牌