フロントエンドには Backbone を、バックエンドには Ruby on Rails を使用しています。認証用にgemを考案しました。数日前にフロントエンド チームが作業を終えました。そのため、リクエストでjsonトラフバックボーン(標準的な方法)でデータを送信しようとしましたが、カスタムセッションコントローラーを入れてもStarted POST "/users/sign_in.json"
エラーが発生します。このような:Completed 401 Unauthorized in 180ms
protect_from_forgery except: :create
class UserSessions::SessionsController < Devise::SessionsController
protect_from_forgery except: :create
......
end
これを省略する方法、または<%= csrf_meta_tags %>
Web で見つけたこのアプローチを使用できるように生成する必要がある場所:
App.csrfToken = $("meta[name='csrf-token']").attr('content');
Backbone.sync = (function(original) {
return function(method, model, options) {
options.beforeSend = function(xhr) {
xhr.setRequestHeader('X-CSRF-Token', App.csrfToken);
};
original(method, model, options);
};
})(Backbone.sync);
フロントエンドは、require.js に依存するバックエンドとは別に作成されているため、これを標準の Rails アセット パイプラインに戻すことはできません。