AntiForgery Asp.net Webforms

时间:2017-03-27 13:28:08

标签: c# asp.net

我在我的asp.net 4.5网络表单应用程序中将它用于Anti Forgery。

<form id="form1" runat="server" class="formCont" method="post">
     <%= System.Web.Helpers.AntiForgery.GetHtml() %>

使用命名空间

using System.Web.Helpers;

并在页面加载

 AntiForgery.Validate();

它工作正常。
现在我已经为javascript的ajax调用创建了asp generic handler。现在问题是如何在我的通用处理程序中验证相同的内容。

我在我的ajax电话中试过这个

 data: { "__RequestVerificationToken": $("input[name=__RequestVerificationToken]").val() },

并在处理程序中尝试此AntiForgery.Validate();,但我得到了异常

An exception of type 'System.Web.Mvc.HttpAntiForgeryException' occurred in System.Web.WebPages.dll but was not handled in user code

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

我已签入,我收到了context.Request["__RequestVerificationToken"]

中的值

我怎么能解决这个问题。

1 个答案:

答案 0 :(得分:0)

我得到了解决方案

它正在查看context.Request.Forms集合,所以我做了一个小改动,如下所示

  1. 将请求类型更改为发布type: "POST",
  2. 和bingo有效。