CSRF tokenでエラー解消方法メモ
- エラー内容
Can't verify CSRF token authenticity.
1つ目:コントローラで制御
controller
# CSRF保護を無効
protect_from_forgery :except => [:create] #対象のアクションに修正
でも可能。
2つ目:Ajaxで送信する前にtokenを取得し送信する
jsファイル
$.ajaxPrefilter(function(options, originalOptions, jqXHR) {
var token;
if (!options.crossDomain) {
token = $('meta[name="csrf-token"]').attr('content');
if (token) {
return jqXHR.setRequestHeader('X-CSRF-Token', token);
}
}
});
- $.ajaxPrefilter( [dataTypes], handler )
ajax送信する事前に処理を行う
ajaxリファレンス - token取得
token = $('meta[name="csrf-token"]').attr('content');
- tokenをリクエストヘッダに入れる
jqXHR.setRequestHeader('X-CSRF-Token', token)