railsでajaxを使って通信するときに、CSRFトークンを付加するにはどうすれば良い?
Railsでは、セキュリティ保護の一環として、CSRF(クロスサイトリクエストフォージェリ)攻撃を防ぐために、フォームを送信する際にCSRFトークンを必要とするようになっています。同様に、Ajaxを使用してデータを送信する場合にも、CSRFトークンを付加する必要があります。
以下の手順に従って、RailsでAjax通信にCSRFトークンを付加することができます。
1、app/views/layouts/application.html.erbファイルに下記のようにcsrf_meta_tagsを追加します。
<%= csrf_meta_tags %>
2、Ajax通信を行うJavaScriptファイル内で、app/views/layouts/application.html.erbからmeta[name="csrf-token"]を取得します。
var csrf_token = $('meta[name="csrf-token"]').attr('content');
3、Ajaxリクエストを送信する際に、X-CSRF-TokenヘッダーにCSRFトークンを設定します。
$.ajax({
url: '/your_ajax_endpoint',
type: 'POST',
beforeSend: function(xhr) {
xhr.setRequestHeader('X-CSRF-Token', csrf_token);
},
data: { foo: 'bar' },
success: function(response) {
console.log(response);
}
});
このようにして、Ajax通信に必要なCSRFトークンをRailsアプリケーションに付加することができます。