【发布时间】:2012-09-19 23:06:07
【问题描述】:
我已经在 Orchard Modules 中成功使用 Ajax 的 AntiForgery 选项有一段时间了。最近,我一直想改变使用默认的 ContentType = 'application/x-www-form-urlencoded; charset=UTF-8' 到 JSON 有效负载 (ContentType='application/JSON')。
一旦我这样做,我就会得到 ASP.NET 抛出的异常“未提供所需的防伪令牌或无效。”。好的,但是如何在保留 JSON 有效负载的同时添加 __RequestVerificationToken?
作为参考,这是我正在使用的代码:
var config = {
url: url,
type: "POST",
data: data ,
dataType: "json",
contentType: "application/json; charset=utf-8"
};
$.ajax(config);
控制器(在到达此处之前显示“未提供所需的防伪令牌或无效。”):
[HttpPost]
public ActionResult Update(ShoppingCartItemVM[] items)
{
// do stuff
}
这是 Orchard AntiForgery 包装器或 MVC AntiForgery 功能的限制吗?还是我(再次)愚蠢?
【问题讨论】:
-
为什么需要发送 JSON?要么你正在与你的 Orchard 服务器交谈,它会很好地理解 post(包括绑定复杂的数组参数,就像你在那里拥有的那样),要么它是一个外部服务,它不会关心防伪。
-
Json 不是必需的。但是我在这方面反复绊倒,需要知道是我自己还是我不知道的一些限制。正如马修和吉斯卡所言,是我!感谢您的帮助。
标签: asp.net-mvc json orchardcms