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