2014-04-22 58 views
9

我更新了我的rails应用程序到Rails 4.1并开始获取ActionController :: InvalidCrossOriginRequest异常。我发现bing机器人主动抓取我动态生成的JavaScript文件。如何避免ActionController :: InvalidCrossOriginRequest异常?

我认为这是正确的Rails引发这个异常,因为直接调用JavaScript,但我的日志充满了这个异常。

有没有办法避免机器人在不关闭csrf保护的情况下引发此异常?

我的控制器看起来像这样。

class ListsController < ApplicationController 
    before_filter :authenticate_user! 

    def add 
    @list = List.find(params[:id]) 
    respond_to do |format| 
     format.js { render 'add' } 
     format.html { redirect_to list_path(@list) } 
    end 
    end 

end 

回答

4

为了增加J-H的答案,假设你需要一些帮助CORS,你应该知道,每个主机使用CORS policy来确定谁可以(也不能)直接访问他们的服务器

您的错误基本上是因为您的服务器的CORS策略仍然默认为“拒绝”每个直接的XHR访问。解决这个问题的方法是确定您的服务器上endpoints这将是可供外部资源

这种事要做到这一点是使用rack-cors gem的建议,J-H :)

+5

在我的情况也是最好的方式这是由于谷歌机器人,僵尸和pinterest。但为什么所有的机器人都试图直接访问js文件?并根据上述创业板将有助于允许。但如果我不想允许呢? –