2014-11-05 1148 views
7

所需的防僞cookie「__RequestVerificationToken」不存在。所需的防僞cookie「__RequestVerificationToken」不存在。

我在CSHTML和控制器也加入

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

    //some code 

    } 

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



    } 
+2

對於GET請求,您不需要ValidateAntiForgeryToken。條紋。確實是 – Vladimirs 2014-11-05 14:10:20

+0

。應該在GET請求上設置cookie並在POST請求上進行檢查。在GET上檢查標記只會導致錯誤,因爲它是第一個請求,標記還沒有設置。 – MovGP0 2016-04-22 17:07:19

回答

5

的問題是因爲你設置ValidateAntiForgeryToken屬性行動至極只允許GET請求。 對於GET操作,您不需要使用with屬性。看here瞭解更多信息

+0

這是因爲用於發佈的ValidatAntiForgeryToken? – user3233312 2014-11-05 14:24:21

+0

是的,它可以幫助您確保POST請求來自您的應用程序生成的頁面。這種攻擊稱爲跨站點請求僞造。 – Pavel 2014-11-05 14:32:45

30

在我的情況,我在web.config中有這樣:

<httpCookies requireSSL="true" />

但我的項目設置爲不使用SSL。評論這條線或設置項目總是使用SSL解決了它。

+3

這個答案對我有幫助。在開發過程中不使用SSL是很常見的,因此設置** httpCookies **以要求SSL會導致在訪問** localhost **網站時不發送cookie。只要確保在部署時將其設置爲true,我通常會在Web.Release.config文件中執行此操作。 – 2015-05-08 14:18:51

+0

花了我整整一天的時間來弄清楚。沒有你的答案,它會花更多的錢!謝謝。 – 2015-05-11 06:36:43

+1

當應用程序移動到終止SSL的設備而不是Web服務器時,我遇到了這個問題。 – 2016-06-10 00:35:34

0

就我而言,這是因爲我之前運行了另一個Asp.Net網站。所以cookie不能匹配localhost。 我清除了我的cookies(僅用於localhost),現在一切正常。

相關問題