MVC Antiforgery请求验证令牌出现在查询字符串中

时间:2011-12-12 11:55:32

标签: asp.net-mvc asp.net-mvc-3 antiforgerytoken

我有一个MVC 3视图,其中包含以下代码: -

@using (Html.BeginForm(MVC.Order.SearchResults(), FormMethod.Get))
{
    @Html.AntiForgeryToken()

    @Html.Button("btnSearch", "Search", HtmlButtonType.Submit, null, new { @class = "button primary icon search", alt = "Search the orders (up to 50 characters)" }
}

当我发布表单时,我看到了__RequestVerificationToken =以及查询字符串中的验证令牌的内容。

任何想法为什么会出现这种情况以及如何对其进行排序?

2 个答案:

答案 0 :(得分:3)

防伪标记仅适用于POST请求。如果要使用它们,则需要将表单使用的动词更改为POST而不是GET:

@using (Html.BeginForm(MVC.Order.SearchResults(), FormMethod.Post))
{
    @Html.AntiForgeryToken()

    @Html.Button("btnSearch", "Search", HtmlButtonType.Submit, null, new { @class = "button primary icon search", alt = "Search the orders (up to 50 characters)" }
}

答案 1 :(得分:0)

有一种解决方法,您可以通过GET方法甚至在标头中传递antiforegy值。更多详情here