gpt4 book ai didi

jquery - 所需的防伪表单字段 "__RequestVerificationToken"不存在

转载 作者:行者123 更新时间:2023-11-30 23:55:00 25 4
gpt4 key购买 nike

这对我来说是另一个障碍,我希望我的网站保持跨站点攻击保护,我正在通过 Ajax 请求使用 asp.net mvc 5 开发一个主/详细表单,因此,为了创建一个条目,我必须经历Ajax请求的过程,这样:

$.ajax({
url: '/Sales/Create',
data: JSON.stringify(salesmain),
type: 'POST',
contentType: 'application/json;',
dataType: 'json',
success: function (result) {

if (result.Success == "1") {
window.location.href = "/Sales/index";
}
else {
alert(result.ex);
}
}
});

现在,它没有导航到销售 Controller 中的“创建”操作,如 ajax 请求所述,在此之前,它会引发以下异常:

The required anti-forgery form field "__RequestVerificationToken" is not present.

我在谷歌上搜索了很多,但仍然不成功,这就是我来这里的原因,我读过一些博客,其中说使用 jquery 获取隐藏的 __RequestVerificationToken 字段并将其附加到表单值中,包含 JSON.stringify (salesmain) 在函数中,这样:

$.ajax({
.
.
addRequestVerificationToken(JSON.stringify(salesmain))

和功能:

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

另外,我已经有了以下代码结构:

@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
.
.

以及创建操作之前的属性:

[HttpPost]
[ValidateAntiForgeryToken]
public JsonResult Create([Bind(Include = "SalesId,ReferenceNo,SalesDate,SalesPerson")] SalesMain salesMain)
{
.
.

而且我正在使用 jQuery 1.5,可能它是罪魁祸首,如果不是那么我应该做什么来解决这个问题?任何帮助将不胜感激,提前致谢:)

最佳答案

您的 addRequestVerificationToken() 函数不会添加 token ,因为您已经对数据进行了字符串化(它不再是 JavaScript 对象,因此 data.__RequestVerificationToken = $(...) 不执行任何操作)。

您可以通过将代码更改为来实现此目的

data: JSON.stringify(addRequestVerificationToken(salesmain)),

但是这是不必要的,因为您不需要对数据进行字符串化。相反,请删除 contentType: 'application/json;', 选项,以便它使用默认的 application/x-www-form-urlencoded; charset=UTF-8' 并使用

data: addRequestVerificationToken(salesmain),

或者更好的是,如果您使用 HtmlHelper 方法正确生成了 View ,并且您的输入包含正确的名称属性 (name="SalesId", name="ReferenceNo" 等)然后您只需使用

data: $('form').serialize(),`

它将正确序列化表单中的所有输入,包括 token 。

关于jquery - 所需的防伪表单字段 "__RequestVerificationToken"不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35409290/

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