我很好奇这意味着什么。
但这是具体细节..
我正在做一个可排序的jquery项目,它涉及这个rails操作:
def update_order
params[:media].each_with_index do |id, index|
media = @organization.media.find(id)
media.do_not_touch = true
media.update_attribute('position', index+1)
end if params[:media]
render :nothing => true
end
我只是在寻找出现此错误的一般原因。
答案 0 :(得分:5)
Rails automatically checks表示伪造数据。来自doc:
保护控制器操作 通过确保所有的CSRF攻击 表格来自当前的网站 应用程序,而不是来自的伪造链接 另一个网站,是通过嵌入一个 基于存储的随机字符串的令牌 在会话中(攻击者 不会知道所有形式和Ajax Rails生成的请求然后 验证其真实性 控制器中的令牌
您可以针对给定的Ajax调用禁用此功能,或者您也可以使用值为<%= form_authenticity_token %>
要禁用它(我不推荐),您可以执行以下操作之一:
class FooController < ApplicationController
protect_from_forgery :except => :update_order
# you can disable csrf protection on controller-by-controller basis:
skip_before_filter :verify_authenticity_token
end
答案 1 :(得分:1)
普通Rails表单助手将在表单中注入隐藏的真实性标记。当您自己滚动时,例如您可能正在为此Ajax代码执行的操作,您可能还没有添加令牌。
This old post有一些很好的提示可能会对您有所帮助,具体取决于您是否真的关心使用该令牌,还是只想将其关闭以执行该操作。