Ich hatte das gleiche Problem, aber mit Seiten, die zwischengespeichert wurden. Die Seiten wurden mit einem veralteten Authentizitätstoken gepuffert, und alle Aktionen mit den Methoden post / put / delete wurden als Fälschungsversuche erkannt. Der Fehler (422 Unprocessable Entity) wurde an den Benutzer zurückgegeben.
Die Lösung für Rails 3:
Hinzufügen:
skip_before_filter :verify_authenticity_token
oder als "sagivo" in Rails 4 hervorgehoben:
skip_before_action :verify_authenticity_token
Auf Seiten, die Caching durchführen.
Wie @toobulkeh kommentierte dies ist keine Schwachstelle auf :index
, :show
Aktionen, aber mit diesem auf Vorsicht :put
, :post
Aktionen.
Beispielsweise:
caches_page :index, :show
skip_before_filter :verify_authenticity_token, :only => [:index, :show]
Referenz: http://api.rubyonrails.org/classes/ActionController/RequestForgeryProtection/ClassMethods.html
Hinweis hinzugefügt von barlop-Rails 4.2 veralteter skip_before_filter zugunsten von skip_before_action https://guides.rubyonrails.org/4_2_release_notes.html "Die * _filter-Methodenfamilie wurde aus der Dokumentation entfernt. Von ihrer Verwendung wird zugunsten der * _action abgeraten Methodenfamilie "
Für Rails 6 (wie "collimarco" hervorhob) können Sie es verwenden skip_forgery_protection
und es ist sicher, es für eine REST-API zu verwenden, die keine Sitzungsdaten verwendet.