【发布时间】:2016-12-06 02:00:15
【问题描述】:
我正在尝试创建一个允许用户提交评论的应用。
我使用了survey.js,它返回一个带有响应的json对象,这里是咖啡脚本文件,它将请求发送到所需的url:
$.ajax({
type:'POST',
url: "/surveys/save",
data: survey.data,
success: alert("saved"),
dataType: JSON
在我的控制器中,我尝试保存适当的参数:
def create
if validate_user
@submission = Submission.new(submission_params)
if @submission.save
redirect_to '/surveys/saved'
else
redirect_to '/surveys/nosaved'
end
end
end
但是我从服务器看到这个输出:
"Started POST "/surveys/save" for ::1 at 2016-08-01 00:21:47 -0400
Processing by SurveysController#create as */*
Parameters: {"question1"=>"eh", "question2"=>"1", "question3"=>"3", "question4"=>"1", "question5"=>"1", "question6"=>"3", "question7"=>"4", "question8"=>"1", "question9"=>"2", "question10"=>"1"}
Can't verify CSRF token authenticity"
请告知,根据我的研究,我似乎需要在我的请求中添加真实性令牌,但我不知道该怎么做。
谢谢!
****更新**
我的应用程序布局文件中确实有 CSRF 元标记
******更新 2*******
我在 Coffee 脚本中尝试了以下操作,得到了相同的输出。
$.ajax({
type:'POST',
beforeSend: test = (xhr)-> return xhr.setRequestHeader('X-CSRF-Token', $('meta[name="csrf token"]').attr('content'))
url: "/surveys/save",
data: survey.data,
success: alert("saved"),
dataType: JSON
});
【问题讨论】:
-
您能否验证您是否有此行:
<%= csrf_meta_tag %>在您的布局文件中的某处,例如application.html.erb?
标签: ruby-on-rails json ajax csrf survey