5

我正在我的应用程序中通过 javascript 发送一些非常简单的 ajax 发布和补丁请求。功能很好,按预期工作。但是,我在 ajax 请求参数中看不到真实性令牌,它仍然有效。

javascript (jQuery)

$.ajax({
  type:'PATCH', 
  url: '/dashboard/goals/#{@goal.id}.js', 
  data: $.param({ 
    new_invitation: { 
      recipient_id: recId, 
      type: "GoalInvite", 
      user_id : #{current_user.id}
    }
  })
}); 

并且参数在日志中显示如下 -

Parameters: {"new_invitation"=>{"recipient_id"=>"24", "type"=>"GoalInvite", "user_id"=>"23"}, "id"=>"234"}

没有真实性令牌。我想我知道如何添加它,但我很惊讶它甚至可以在没有它的情况下工作。任何人都可以对此有所了解吗?

4

1 回答 1

13

如果您检查请求对象,您将(希望)看到有一个名为HTTP_X_CSRF_TOKEN包含真实性令牌的请求标头。该jquery_ujs库会为您处理此问题,因此您不必手动将令牌包含在 AJAX 请求中。

于 2014-06-18T14:04:37.303 回答