DesignAssembler

備忘録に近い

RailsでのCSRF対策避け

railsでガリガリjsでajaxの実装してるとPOSTした時CSRFのエラーが出ます。

Can't verify CSRF token authenticity

解決方法ググると「CSRF対策をオフにすれば動くようになる」と書いてある記事が多かったですが、それでは根本的な解決ではありません。

CSRF対策を避けるには、ヘッダーにauthenticity_tokenが必要なようです。

ajax部分にauthenticity_tokenを追加します

      $.ajax({
        type :"POST",
        url: "/users/add_option_tag",
        data: {
          lat: lat,
          lng: lng,
          "authenticity_token": $("#authenticity_token").val()
          }

scriptタグの前にhidden_field_tagを追加します

<%= hidden_field_tag "authenticity_token", form_authenticity_token %>

これで無事200が返ってきました。