升级到Rails 4.1后无效的跨源请求

am-*_*ils 12 forms internet-explorer ruby-on-rails antiforgerytoken ruby-on-rails-4

在我从Rails 3.2升级到Rails 4.1之后的某些时候,我开始收到以下错误:

ActionController :: InvalidCrossOriginRequest:安全警告:另一个站点上的嵌入式标记请求受保护的JavaScript.如果您知道自己在做什么,请继续并禁用此操作的伪造保护以允许跨源JavaScript

它们主要来自Windows XP上的Internet Explorer 6或8浏览器,并且永远不会附带用户信息,即使它们正在访问仅向登录用户显示的控制器操作.

如何解决此问题或解决此问题?

(另请参阅升级之前的相关问题:为什么Rails无法从Internet Explorer的Ajax请求中访问会话?)

JAR*_*ans 20

根据rails指南中的"远程标签的CSRF保护":

在测试的情况下,您也在做客户端,请从以下位置更改:

get:index,format :: js

至:

xhr:get,:index,格式:: js

http://edgeguides.rubyonrails.org/upgrading_ruby_on_rails.html#csrf-protection-from-remote-script-tags

如果你想让这条路线跳过csrf检查,白色列出路线使用类似的东西:

protect_from_forgery :except => :create
Run Code Online (Sandbox Code Playgroud)

  • JAR.JAR.beans,通过这样做可能带来的安全隐患:除了=>:create? (2认同)