Asp.net mvc 所需的防伪cookie“__RequestVerificationToken“;他不在场。

Asp.net mvc 所需的防伪cookie“__RequestVerificationToken“;他不在场。,asp.net-mvc,Asp.net Mvc,所需的防伪cookie“\uu RequestVerificationToken”不存在 我在cshtml和Controller中也添加了 using (Html.BeginForm()) { @Html.AntiForgeryToken() //some code } [HttpGet] [ValidateAntiForgeryToken] public ActionResult Index() { using (var

所需的防伪cookie“\uu RequestVerificationToken”不存在

我在cshtml和Controller中也添加了

 using (Html.BeginForm())
 {
   @Html.AntiForgeryToken()

  //some code

  }

     [HttpGet]
    [ValidateAntiForgeryToken]
    public ActionResult Index()
    {
        using (var db = new SampleEntities())
        {
            return View(db.Rfps.ToList());
        }



    }

问题是因为您在GET请求上使用了
ValidateAntiForgeryToken
属性。
您不需要将此属性用于
GET
操作。查看更多信息:

在我的例子中,我的web.config中有:


但是我的项目被设置为不使用SSL。注释掉这一行或设置项目始终使用SSL解决了这一问题。

在我的情况下,这是因为我以前运行过另一个Asp.Net网站。因此Cookie无法与localhost匹配。
我清除了我的cookies(仅针对本地主机),现在一切正常。

GET请求不需要ValidateAntiForgeryToken。真的。应该在GET请求上设置cookie,并在POST请求上检查cookie。检查GET上的令牌只会导致错误,因为这是第一个请求,但尚未设置令牌。这是因为ValidateAntiforgeryToken用于发布吗?是的,它可以帮助您确保发布请求来自应用程序生成的页面。这个攻击叫做跨站点请求伪造。这个答案帮助了我。在开发过程中通常不使用SSL,因此将HttpCookie设置为需要SSL会导致在本地主机上访问网站时不发送Cookie。只要确保在部署时将其设置回true,我通常在Web.Release.config文件中这样做。我花了一整天的时间才弄明白。如果没有你的回答,就要花更多的时间!谢谢。当应用程序移动到一个终止SSL的设备后面而不是web服务器之后,我遇到了这个问题。我的项目没有SSL。所以我用这样的方式解决:)