Home > All > ActionController::InvalidAuthenticityToken

ActionController::InvalidAuthenticityToken

April 16th, 2009 Leave a comment Go to comments

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エラー

関連記事:

  1. No comments yet.
  1. No trackbacks yet.