ActionController::InvalidAuthenticityToken

Railsでformメソッドを使わずにPOSTなど、GET以外でデータを送信すると

ActionController::InvalidAuthenticityToken

というエラー(HTTPステータスコード422)が返されることがあります

これはRails標準のCSRF対策で、GET以外のデータ受信時にサーバ側で生成されるトークンが要求されるために起こります
formメソッドを使えば自動的にトークンを生成して埋め込んでくれますので普通は遭遇しないのですが…

今回自分はGreasemonkeyScriptからxmlhttpRequestでPOSTして嵌りました
今回は外部から利用してもらうこと(APIのつもり)が前提なのでそのメソッドだけ

skip_before_filter :verify_authenticity_token ,:only=>[:action_name]

をコントローラに書いてトークンチェックを無効化しました
セキュリティ的にはどうなんでしょうかね…?
RailsでAPIがどのように作られているのか勉強したいです;

参考
【 Ruby on Rails Pro 】 POST送信でInvalidAuthenticityTokenエラー

カテゴリー: All   タグ: ,   この投稿のパーマリンク

コメントをどうぞ

メールアドレスが公開されることはありません。

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>