LoginSignup
1
0

Rails で jQuery.ajax してたら勝手に X-CSRF-token がつくんだけど

Last updated at Posted at 2024-03-06

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 より

あなたがやってくれていたんですね!

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0