我的jquery AJAX POST请求无需发送真实性令牌(Rails)

Dav*_*d C 5 ruby ajax jquery ruby-on-rails csrf

在rails中是否有任何规定允许来自站点的所有AJAX POST请求在没有authenticity_token的情况下通过?

我有一个调用控制器方法的Jquery POST ajax调用,但我没有在其中放入任何真实性代码,但调用成功.

我的ApplicationController确实有'request_forgery_protection',我已经改变了

config.action_controller.consider_all_requests_local
Run Code Online (Sandbox Code Playgroud)

在我的环境/ development.rb中为false

我还搜索了我的代码以确保我没有超载ajaxSend来发送真实性令牌.

是否有一些机制在禁用检查?现在我不确定我的CSRF保护是否有效.

我正在使用Rails 2.3.5.

更新清晰度:

function voteup(url, groupid){
      $.ajax({
        type: "POST",
        url: "/groups/" + groupid + "/submissions/voteup",
        data: "url=" + url,
        dataType: 'text',
        success: function(data){
          var counter = "vote_" + url;
          $('#vote_' + url.cleanify()).text(" " + data + " ");
        }
      });
    };
Run Code Online (Sandbox Code Playgroud)

我有一个链接,然后有一个调用上述函数的'href:

<a href='javascript:voteup(param1,param2)'>...</a>
Run Code Online (Sandbox Code Playgroud)

小智 6

这里可能的一个场景是你使用jQuery来序列化一个普通的Rails表单......它包含了序列化的auth令牌隐藏字段(Rails将它们添加到所有表单中).

查看您提交的表单的生成源...很可能您会看到

<input name="authenticity_token" type="hidden" value="somethinghere...." />
Run Code Online (Sandbox Code Playgroud)

您可以做的另一件事是检查日志以查看authenticity_token字段是否在请求参数中.