【Rails5】APIに対するアクションに対してCSRFを無効にする

Rails では Apprication Controller に protect_from_forgery と書くだけで CSRF 対策が有効になり、Rails アプリ作成の際にはかなり強力。

しかし、API を同時に作成する場合には API 機能の場合のみ CSRF の対策は必要ないので、API を呼び出すときだけ無視してくれるように設定する。

※ API モードで開発している場合はそもそも protect_from_forgery なんて書く必要ないので問題なし。

app>controllers の application_controller.rb に

protect_from_forgery with: :null_session

もしくは

protect_from_forgery

と書くだけ。(二つの行は同じ意味)

本来 :exception と書いてある場所を、 :null_session に変えることで、protect_form_forgery で使用される CSRF Token がリクエスト元と一致しなかった場合に例外を投げるんじゃなくてセッションを空にするという動作になる。

すると、セッション処理なんて必要ない API 機能が問題なく使える。