该错误通常发生在ASP.NET MVC应用程序中,因为在POST请求中没有传递必要的防伪标记(Anti-forgery token)。
解决此问题的方法是在表单中添加一个隐藏的防伪标记,并在控制器的POST动作中验证该标记是否存在并是否匹配。例如:
在HTML表单中添加一个隐藏的标记:
在控制器的POST动作中验证标记:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult MyAction(MyModel model)
{
if (ModelState.IsValid)
{
// 验证防伪标记
if (!Request.IsAjaxRequest() && !ModelState.IsValid)
{
// 验证失败,处理错误
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
// 处理逻辑
return RedirectToAction("Success");
}
else
{
return View(model);
}
}