0
我正在從struts遷移到春季遷移。由於我正在研究最新的春季版4.3,我們決定爲我們的應用程序提供CSRF保護。在我們的JSP頁面上,我們有兩個可用http get方法調用的選項卡,可以調用spring controller。每個標籤都有多個鏈接和按鈕。獲得通話後如果我在頁面上執行任何操作,例如單擊一個按鈕,該按鈕會向控制器發送呼叫。我收到403條禁止消息「期望的CSRF令牌未找到,您的會話是否過期?」 。春季CSRF HTTP 403禁止錯誤
在Firefox開發人員工具發佈調用表單數據時,我可以看到帶有令牌的_csrf。響應標題表示x框架選擇:拒絕。我懷疑前面的選擇導致問題的選項卡上的HTTP GET。我們是否也需要爲http GET方法傳遞csrf標記?任何幫助?
您可能需要分享一些代碼,因爲它不清楚您要問什麼。首先,不,您當然不需要發送GET請求的CSRF令牌,但是當GET請求由控制器處理時,會生成一個新的CSRF令牌,這就是Spring Security期望收到的內容下面的POST。在GET之後顯示的頁面中,您是否仍然看到CSRF令牌,並且是否更新?在GET之前和之後,您應該在瀏覽器中看到CSRF令牌的不同值。 – DaveyDaveDave
GET調用後,我得到相同的csrf標記。其實我並沒有寫任何新的代碼來從響應中讀取。我正在使用的是彈簧mvc標記或。按照Spring文檔https://stackoverflow.com/questions/26866529/spring-csrf-token-life默認的csrf令牌生存期是基於會話的。我會嘗試在這裏添加一些代碼。 –
Kiran