我有一个单页的ROR应用程序,有很多远程表单。我的问题是在非幂等请求之后Rails更改CSRF令牌并使页面元中嵌入的令牌无效。因此,如果页面没有刷新,重复的非无效请求将失败。
例如,当通过POST提交的远程表单因验证错误而失败并且重新提交表单时,它会因InvalidAuthenticityToken错误而失败。
我认为这个问题很常见,Rails默认处理它,但显然不是。
答案 0 :(得分:4)
我对此的解决方案,这里有任何可疑之处吗?:
application_controller.rb:
//= require jquery2
//= require jquery_ujs
//= require turbolinks=
$( document ).ajaxComplete(function( event, xhr, settings ) {
header_token = xhr.getResponseHeader('X-CSRF-Token');
if (header_token) $('meta[name=csrf-token]').attr('content', header_token)
});
的application.js:
Private Sub TextBox1_MouseHover(sender As Object, e As EventArgs) Handles TextBox1.MouseHover
TextBox1.Visible = True
End Sub
Private Sub TextBox1_MouseLeave(sender As Object, e As EventArgs) Handles TextBox1.MouseLeave
TextBox1.Visible = False
End Sub