4

私は自分の Rails サイトを 1 ページの読み込みだけで実装し、それ以外はすべて AJAX で行うことにしました。問題は、生成された CSRF トークンがmeta、サインアップまたはサインイン フォームの送信に使用されると無効になることです。ページをリロードせずに更新するにはどうすればよいですか?

4

3 に答える 3

0

各 ajax リクエストで:

データに追加:

Authenticity_token: '<%= form_authenticity_token %>'

于 2013-03-11T10:56:55.673 に答える
0

put、post メソッドの ajax 呼び出しで、以下のように beforeSend を使用できます。 $.ajax({ type: 'POST', beforeSend: function(xhr) {xhr.setRequestHeader('X-CSRF-Token', $('meta[name="csrf-token"]').attr('content'))}, url: your url, data: data });

于 2015-11-23T12:10:42.790 に答える
0

Rails がリクエスト (または投稿など) ごとに CSRF メタ トークンを無効にするとは思いません (そうでなければ、backbone.js のようなフレームワークは苦労するでしょう :)。

https://github.com/rails/rails/blob/7fb99e5743d88c04357e09960d112376428a6faa/actionpack/lib/action_controller/metal/request_forgery_protection.rb#L100

おそらく、正しいトークンなしで無効であると思われるリクエストの前にリクエストを行っているため、レールはセッションを削除し、後続のリクエストは以前に正しいトークンを渡したとしても無効としてマークされます。

于 2012-07-04T13:16:50.007 に答える