Documentação do Symfony - versão 3.1
Renderizada do repositório symfony-docs-pt-BR no Github
Tokens CSRF são destinados a serem diferentes para cada usuário. Esse é o motivo porque você precisa ser cauteloso ao tentar fazer cache de páginas que incluem formulários.
Para obter mais informações sobre como a proteção CSRF funciona no Symfony, por favor verifique Proteção CSRF.
Tipicamente, para cada usuário é atribuído um token CSRF único, que é armazenado em sessão para validação. Isso significa que se você fazer cache de uma página com um formulário contendo um token CSRF, você vai armazenar em cache o token CSRF do primeiro usuário somente. Quando um usuário submete o formulário, o token não corresponde ao token armazenado na sessão e, para todos os usuários (exceto o primeiro), irá falhar a validação CSRF ao enviar o formulário.
De fato, muitos proxies reversos (como o Varnish) vão recusar a colocar em cache uma página com um token CSRF. Isso porque um cookie é enviado, a fim de preservar a sessão PHP aberta e o comportamento padrão do Varnish e não armazenar em cache solicitações HTTP com cookies.
Para armazenar em cache uma página que contém um token CSRF, você pode usar técnicas de cache mais avançadas como fragmentos ESI, onde você armazena em cache a página inteira e incorpora o formulário dentro de uma tag ESI sem cache.
Outra opção seria carregar o formulário através de uma solicitação AJAX sem cache, mas fazer o cache do resto da resposta HTML.
Ou, você ainda pode carregar apenas o token CSRF com uma requisição AJAX e substituir o valor do campo do formulário com ele.