Jquery 正在重置Rails会话

Jquery 正在重置Rails会话,jquery,ruby-on-rails,session,csrf-protection,Jquery,Ruby On Rails,Session,Csrf Protection,我有一个奇怪的问题。我最近检测到通过AJAX发布的文本字段出现错误。经过调查,我发现这个POST AJAX请求会重置会话。我想一定是csrf的问题。我检查了令牌,它正在正确传递,如布局文件中所示: <%= javascript_tag "var AUTH_TOKEN = #{form_authenticity_token.inspect};" if protect_against_forgery? -%> 我的AJAX请求如下所示: <script type="tex/

我有一个奇怪的问题。我最近检测到通过AJAX发布的文本字段出现错误。经过调查,我发现这个POST AJAX请求会重置会话。我想一定是csrf的问题。我检查了令牌,它正在正确传递,如布局文件中所示:

  <%= javascript_tag "var AUTH_TOKEN = #{form_authenticity_token.inspect};" if protect_against_forgery? -%>
我的AJAX请求如下所示:

 <script type="tex/javascript">
            $(document).ready(function(){
                    $("#post_msg").click(function(){
                            var update = $("#msg").val();
                            var authenticity_token = AUTH_TOKEN;
                            $.ajax({
                                    type: "POST",
                                    url: "/messages.js",
                                    data: "msg[text]="+escape(msg) + "&_csrf_token="+encodeURIComponent(authenticity_token),
                                    dataType: "json",
                                    success: function(msg){
                                      // Code to append the msg to DOM
                                    )

但在调试器中,我注意到csrf令牌与散列中已有的令牌不同。我无法理解这一切。有什么线索可以解释这一切的原因吗?

在我的Rails 3应用程序中,令牌名称是Authentity\u token,而实际的令牌本身在发布之前没有编码。

在我的Rails 3应用程序中,令牌名称为Authentity\u token,实际令牌本身在发布前未进行编码。

是否使用页面缓存?如果是这样,您可能正在使用一个CSRF令牌缓存表单,然后稍后再将其提供给另一个用户。是否使用页面缓存?如果是这样,您可能正在使用一个CSRF令牌缓存表单,然后稍后再将其提供给另一个用户。