2017-02-01 1 views
0

に話している間、私は私のRailsアプリケーションにAPIを設定している無効なCSRFは、と私の最初のフォームを作成し、何かを投稿しようとした後、私はこのエラーが発生しました:RailsのAPI

Can't verify CSRF token authenticity. 
Completed 422 Unprocessable Entity in 2ms (ActiveRecord: 0.0ms) 
ActionController::InvalidAuthenticityToken - ActionController::InvalidAuthenticityToken: 

を私はポストの多くを読みました(これはリモートの形式であるとして)

$.ajaxSetup({ 
     headers: { 
     'X-Transaction': 'POST Example', 
     'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content') 
     }, 
    }) 

や私のjavascriptに直接form_authenticity_tokenを渡し、何もうまくいかない:それはこのようなことをお勧めします。それでも同じエラー。

誰でも解決方法を知っていますか?

+0

通常、APIのCSRFを無効にし、別の認証を使用して保護することをお勧めします。 –

+0

あなたは何をお勧めしますか、James Chen? – Ancinek

+1

基本APIコントローラをお持ちの場合は、そのAPIベースコントローラに 'skip_before_action:verify_authenticity_token'を追加することができます。 APIの認証方法は大文字と小文字が区別されますので、プロジェクトに適した認証方法を検索して見つける必要があります。 –

答えて

1

あなたはこれを使用することができます:

class MyController < ActionController::Base 
    protect_from_forgery with: :null_session 
end 

代わりに鍵と秘密で通常行われるべきであるAPIに対する認証します。

+0

私はそれを私のApplicationControllerの内部、または私のApiControllersの内部で使うはずですか? – Ancinek

+0

ApiControllerで – Shannon

+0

私は実際それに固執するでしょう。 apiを認証するための鍵と秘密の使い方をお勧めする記事/ツイートはありますか? – Ancinek