2022-09-15 jQuery.ajaxSetup() でRails CSRFトークンを付与する
jQuery.ajaxSetup() でRails CSRFトークンを付与する
Rails のAJAX通信するときは、CSRFトークンの付与が必要。
rails-ujs/rails/requestjs-rails を使う
Rails Wayでこれを解決するなら rails-ujs を使ったり rails/requestjs-rails を使う必要がある。
const data = new FormData();
data.append("some_key", "some value");
Rails.ajax({ ... })
import { Controller } from '@hotwired/stimulus'
import { post } from '@rails/request.js'
export default class extends Controller {
async hoge() {
const response = await post("/some_resources", {
body: { some_key: "some value" }
})
...
}
}
ref. 【Rails7】Ajaxリクエスト時にCSRF tokenを含める(おそらく)公式のやり方 - Qiita
jQuery.ajaxSetup() を使う
上記のライブラリを使わない場合 + jQuery を使っている場合は jQuery.ajaxSetup()
を使うのがてっとり早い。
これを設定したうえで jQuery で AJAX すれば自動でAJAXに CSRF-TOKEN が付与される。
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
ref. jQueryの$.ajaxSetupを使ってAJAX通信時のデフォルト値を設定する - Qiita