1

私のコントローラーは js GET リクエストに応答しており、私のファイルでは、ユーザーのブラウザーの生成されたブラウザー データをjs.erb報告しています。Fingerprint2データ文字列が大きいため、これは POST 要求で行われるためbeforeSend、Authenticity Token を追加するメソッドを挿入しました。

ただし、これは で拒否されActionController::InvalidAuthenticityToken - ActionController::InvalidAuthenticityTokenます。私がチェックすると、成功した GET リクエストのヘッダーは次のようになります。

X-CSRF-Token:hl/TgkY7k0yBG03KX9IBrsDhk2K4tUUh8JTooT7A0yYZ0l53p8lTt0F3dZvRwyS3bIkbbkuTdElP2KisozjXjw==

js コードは次のようになります。

(new Fingerprint2).get(function(fingerprint, components) {
  return $.ajax({
    url: "/user_browser",
    type: "post",
    beforeSend: function(xhr) {
      xhr.setRequestHeader('X-CSRF-Token',
      $('meta[name="csrf-token"]').attr('content'))
    },
    data: {
      some_id: '123',
      components: JSON.stringify(components),
      fingerprint: fingerprint
    },
    dataType: "json"
  }).success(function(data) {});
});
4

1 に答える 1

0

問題の根本を見つけました。数日前、私は次のように変更config/session_store.rbしました:

MyApp::Application.config.session_store :cookie_store, key: '_my-app_session'

に:

MyApp::Application.config.session_store :disabled

これを元に戻すと、問題はなくなりました。

于 2016-06-09T13:05:52.433 に答える