Rails5 ajax で エラー ActionController::InvalidAuthenticityToken

Railsのajaxでメソッド実行しようとすると ActionController::InvalidAuthenticityToken のエラーがでてきた。原因は?

Rails5 ajax で ActionController::InvalidAuthenticityToken

以下のajaxを実行すると ActionController::InvalidAuthenticityToken のエラーが出力される。

javascript
$.ajax({
        type:"post",
        url:"[URL]",
        dataType: "json",
    }).then(
          function(data) { alert('success!!'); },
          function(data) { alert('error!!');   }
    );

内容をみるとInvalidAuthenticityTokenと、Tokenがおかしいようなことが書かれていますね。

対応としてはTokenを設定してあげればOKです。

javascript
$.ajax({
        type:"post",
        url:"[URL]",
        dataType: "json",
        beforeSend: function(xhr) {
          xhr.setRequestHeader("X-CSRF-Token", $('meta[name="csrf-token"]').attr('content'))
        },
    }).then(
          function(data) { alert('success!!'); },
          function(data) { alert('error!!');   }
    );

X-CSRF-Tokenを設定してajaxを実行するとエラーがなくなります!

POSTデータのやり取り時には注意してみておきましょう。

 

何か参考になれば幸いです(*^^*)