Ho avuto lo stesso problema ma con le pagine che erano nella cache della pagina. Le pagine sono state memorizzate con un token di autenticità non aggiornato e tutte le azioni che utilizzano i metodi post / put / delete sono state riconosciute come tentativi di falsificazione. Errore (422 entità non elaborabile) restituito all'utente.
La soluzione per Rails 3:
aggiungi:
skip_before_filter :verify_authenticity_token
o come "sagivo" sottolineato in Rails 4 aggiungere:
skip_before_action :verify_authenticity_token
Nelle pagine che eseguono la memorizzazione nella cache.
Come ha commentato @toobulkeh, questa non è una vulnerabilità su :index, :showazioni, ma attenzione usando questa su :put, :postazioni.
Per esempio:
caches_page :index, :show
skip_before_filter :verify_authenticity_token, :only => [:index, :show]
Riferimento: http://api.rubyonrails.org/classes/ActionController/RequestForgeryProtection/ClassMethods.html
Nota aggiunta da barlop- Rails 4.2 obsoleto skip_before_filter a favore di skip_before_action https://guides.rubyonrails.org/4_2_release_notes.html "La famiglia di metodi * _filter è stata rimossa dalla documentazione. Il loro utilizzo è sconsigliato a favore dell'azione * _ famiglia di metodi "
Per Rails 6 (come sottolineato da "collimarco") è possibile utilizzare skip_forgery_protectione che è sicuro utilizzarlo per un'API REST che non utilizza i dati di sessione.