В настоящее время я работаю над проектом ASP.NET MVC и натолкнулся на ошибку, которая показалась странной.ASP.NET MVC AntiForgeryToken и кэширование
В шаблонах шаблонов ASP.NET MVC всегда появляется AntiForgeryToken (что заставляет меня думать, что это лучшая практика). Однако AntiForgeryTokens, похоже, не работают с кешированием.
Например, когда я открываю сайт с формой, включающей AntiForgeryToken, и я дублирую окно браузера, оба окна имеют тот же самый AntiForgeryToken, который приводит к исключению при отправке формы. Эта проблема не существует, когда кеширование отключено (через ActionFilter NoCache, см. Disable browser cache for entire ASP.NET website).
Итак, я думаю, мой вопрос: это должно быть так? Есть ли другой способ помимо отключения кэша для решения проблемы?
Особенно тот факт, что шаблоны ASP.NET MVC по умолчанию содержат AntiForgeryTokens, но не отключают кеш (и поэтому открыты для ошибки, описанной выше) заставляет меня задуматься.
Заранее благодарен!
Можете ли вы выслать свой код и точную ошибку? 'Html.AntiforgeryToken()' каждый раз генерирует новый токен, поэтому в двух окнах браузера вы должны иметь разные значения. – andreister
Не, если браузер не запрашивает сервер для второго окна браузера, а использует его кеш. – chrischu