我跟踪导轨入门指南: http://guides.rubyonrails.org/getting_started.html
我正在创建帖子',我在其中设置我的新视图以向我的控制器提交帖子。 当我单击视图中的提交按钮时,我收到错误ActionController :: InvalidAuthenticityToken
我能够通过在ApplicationController
中注释掉这一行来解决错误protect_from_forgery with: :exception
但是我不确定我是否应该这样做。那很好还是我应该深入研究这个问题?那条线做了什么?
内容: /views/layouts/application.html.erb
<!DOCTYPE html>
<html>
<head>
<title>Budget</title>
<%= stylesheet_link_tag "application", media: "all", "data-turbolinks-track" => true %>
<%= javascript_include_tag "application", "data-turbolinks-track" => true %>
<%= csrf_meta_tags %>
</head>
<body>
<%= yield %>
</body>
</html>
答案 0 :(得分:1)
不,你不应该在ApplicationController
中评论该行。它旨在确保您的应用程序在生产级别的安全性。
来自docs:打开请求伪造保护。请记住,只检查非GET,HTML / JavaScript请求。
protect_from_forgery 是Rails中的一项功能,可防御Cross-site Request Forgery (CSRF)攻击。此功能使所有生成的表单都具有隐藏的id字段。此id字段必须与存储的id匹配,否则不接受表单提交。这可以防止插入XSS的其他站点或表单上的恶意表单提交到Rails应用程序。从here无耻地复制。
而且,最后但并非最不重要。这里有the link解释为什么应该认真对待跨站请求伪造(CSRF),以及为什么它很重要。