我有一个名为ProductsController的控制器,为了从.NET客户端应用程序进行PUT API调用,我创建了一个名为 set_status 的操作。我已经正确设置了所有设置,但在发送请求后,我收到“无法验证CSRF令牌真实性”错误。我的应用程序控制器中有以下内容用于CSRF保护:
protect_from_forgery
为了绕过CSRF保护,我已将以下内容添加到我的产品控制器中:
skip_before_filter :set_status
使用此更改进行测试后,仍然会收到相同的错误消息。根据我的理解,上面的代码行应该禁用Products控制器中 set_status 操作的CSRF保护,但它似乎没有工作。
有没有人知道为什么这可能不起作用?非常感谢你提前!
答案 0 :(得分:22)
我明白了!这是我的代码:
skip_before_filter :verify_authenticity_token, :only => [:set_status]
我忘了 protect_from_forgery 语句创建了自己的方法。其中一种方法是verify_authenticity_token,因此它比我想象的要简单得多。之前我被困住了,因为我没有一个verify_authenticity_token方法,但我确实这样做了,因为它是自动生成的。