C# 多个ajax json请求的反伪造令牌

C# 多个ajax json请求的反伪造令牌,c#,jquery,asp.net,asp.net-mvc,asp.net-mvc-4,C#,Jquery,Asp.net,Asp.net Mvc,Asp.net Mvc 4,我在MVC应用程序中实现了以下代码,以便在用户单击链接时加载一些Json对象 <form> @Html.AntiForgeryToken() </form> $("body").on('click', ".clickhere", (function () { var token = $('[name=__RequestVerificationToken]').val(); $.ajax({ type: 'POST', u

我在MVC应用程序中实现了以下代码,以便在用户单击链接时加载一些Json对象

<form>
    @Html.AntiForgeryToken()
</form>

$("body").on('click', ".clickhere", (function () {
var token = $('[name=__RequestVerificationToken]').val();

    $.ajax({
        type: 'POST',
        url: '/do/things',
        cache: false,
        headers: { "__RequestVerificationToken": token },
        contentType: 'application/json; charset=utf-8',
        data: data
 },
        success: function () {
            ...
        },
        error: function () {
            ...
        }
   });  
});

然后我根据验证令牌。奇怪的事实是,如果我在Visual Studio 2015中运行该项目,这是可行的,但如果它在IIS 6.2上作为应用程序发布,则不可行。在IIS上运行时,我可以清楚地看到请求令牌不匹配

为了使其工作,我将视图中的代码更改为:

 @functions{
    public string GetAntiForgeryToken()
    {
        string cookieToken, formToken;
        AntiForgery.GetTokens(null, out cookieToken, out formToken);
        return cookieToken + "," + formToken;
    }
 }
<input type="hidden" name="__RequestVerificationToken" id="__RequestVerificationToken" value="@GetAntiForgeryToken()" />

可能看到缓存页中有过时的令牌。硬刷新会发生什么?@charlietfl同样的结果