フォーム要素を含むビューを返す次のメソッドでは、応答キャッシュは機能しません。フォーム要素がビューから削除されると、応答キャッシュは機能します。 なぜそれが起こっているのですか?
`` `
[ルート( "連絡先")]
[ResponseCache(Duration = 3600)] //このメソッドでは機能しません
public IActionResult Contact()
{{
View();を返します。
}
[HttpPost]
[Route("Contact")]
public IActionResult Contact(ContactViewModel contactViewModel, IFormFile attachment)
{
//Necessary opertaion goes here
return
View(contactViewModel);
}
`` `
応答ヘッダーを見てください。 これは、フォームで偽造防止が有効になっていて、常にキャッシュなしのヘッダーが設定されているために発生していますか?
@Tratcherはい! 偽造防止が有効になっているため、応答キャッシュが機能していませんでした。私の質問は、偽造防止が有効になっていると応答キャッシュが機能しないのはなぜですか。
フォームの偽造防止トークンはCookieに添付されているため、キャッシュしないでください。キャッシュしないと、同期がとれなくなる可能性があります。
最も参考になるコメント
フォームの偽造防止トークンはCookieに添付されているため、キャッシュしないでください。キャッシュしないと、同期がとれなくなる可能性があります。