我在我的应用程序中通过javascript发送一些非常简单的ajax帖子和补丁请求。功能很好,按预期工作。但是,我没有在ajax请求参数中看到真实性令牌,它仍然有效。
$.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"}
没有真实性令牌。我想我知道如何添加它,但我很惊讶它甚至没有它。任何人都可以对此有所了解吗?
答案 0 :(得分:12)
如果您检查请求对象,您(希望)会看到有一个名为HTTP_X_CSRF_TOKEN
的请求标头包含真实性标记。 jquery_ujs
库会为您处理这个问题,因此您不必手动将令牌包含在AJAX请求中。