読者です 読者をやめる 読者になる 読者になる

のんびりしているエンジニアの日記

ソフトウェアなどのエンジニア的な何かを書きます。

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のバージョンによって挙動が違うので気をつけなければいけません。

広告を非表示にする