jQuery 使ってますか?多くの方はもう使ってないと思いますが、歴史あるWebアプリを触ってる方は使ってると思います。で、Rails(jquery-rails)との組み合わせで気付いていなかった挙動があったのでメモしておきます。
jQuery.ajax({
url: '/api/v1/some_resources',
type: 'POST',
data: {
attr1: 'val1'
}
})
こんなJSを書いて発行されたリクエストを見てみると、ヘッダに X-CSRF-token
がくっついていました。 Rails の CSRF 防御機能で使うトークンです。つけた覚えがないのになんでついてるんだ!? axios とか素の fetch
でリクエストするとつかないぞ!?とおもってコードを読んでいたら、 jquery-rails がやってくれてたんでした。
// Make sure that every Ajax request sends the CSRF token
CSRFProtection: function(xhr) {
var token = rails.csrfToken();
if (token) xhr.setRequestHeader('X-CSRF-Token', token);
},
vendor/assets/javascripts/jquery_ujs.js#L72-L76 より
あなたがやってくれていたんですね!