2014-06-18 2 views
4

내 애플리케이션에서 javascript를 통해 매우 간단한 아약스 게시물 및 패치 요청을 보내고 있습니다. 기능은 정상적으로 작동합니다. 그러나, 나는 ajax 요청 매개 변수에 신뢰성 토큰이 표시되지 않고 여전히 작동합니다.레일즈 4 인증 토큰이없는 Ajax 요청

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

에는 인증 토큰을 - 로그에 다음과 없으므로

자바 스크립트 (jQuery를)

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

과 PARAMS이 나타납니다. 나는 내가 그것을 어떻게 추가 할 수 있었는지를 안다라고 생각한다. 그러나 나는 그것이 그것없이 일하는 것이 놀랍다. 누구든지 이것에 대해 밝힐 수 있습니까?

+1

앱의'protect_from_forgery'. 제어 장치. ? – Nithin

+0

예. 앱 컨트롤러에 있습니다. –

답변

12

요청 개체를 검사하면 인증 토큰이 포함 된 HTTP_X_CSRF_TOKEN이라는 요청 헤더가 있음을 알 수 있습니다. jquery_ujs 라이브러리가이를 처리하므로 AJAX 요청에 토큰을 수동으로 포함하지 않아도됩니다.

+0

옙 헤더가'X-CSRF-Token :' –

+1

되었습니다. 'application.js' 파일에'= require jquery_ujs'라는 줄을 넣은 후. 고맙습니다. – yeyo

+0

+1은 jquery_ujs 라이브러리가 나를 위해이 작업을 수행함을 상기시켜줍니다. 나는 외부/클라이언트가 애플 리케이션의 측면에 직면하고 있었는데이 포함되지 않았고, 왜이 특정 아약스 요청은 인증 토큰에 대해 불평했다 알아낼 수 없었다. 감사! – gregblass