Ruby on Rails のサーバーにPOSTが送れない!?(Can't verify CSRF token authenticity)
Sponsored Links
皆さんこんにちは
お元気ですか。お腹すいた。じゃがいもつくろう。
Railsで作ったサーバーに対してPostを送信すると以下のような
エラーが出て困った。
Can't verify CSRF token authenticity Completed 422 Unprocessable Entity in 1ms ActionController::InvalidAuthenticityToken (ActionController::InvalidAuthenticityToken):
ところでCSRFとはなんでしょうか?Cross-Site Request Forgeriesの略で、POSTするところに誘導するような攻撃のようです。これを防ぐ為に実装されたとかなんとか。
解決方法
ApplicationControllerのprotect_from_forgery, :exceptionの箇所を、null_sessionとする。作った時のコメントに書いてあるとは…、
class ApplicationController < ActionController::Base # Prevent CSRF attacks by raising an exception. # For APIs, you may want to use :null_session instead. protect_from_forgery with: :null_session end
調べたところによるとRailsのバージョンによって挙動が違うので気をつけなければいけません。