9

我将我的 rails 应用程序更新到 Rails 4.1 并开始收到 ActionController::InvalidCrossOriginRequest 异常。我发现 bing 机器人会主动爬取我动态生成的 javascript 文件。

我认为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

2 回答 2

4

要添加到J-H的答案,并假设您需要一些有关CORS的帮助,您应该知道每个主机都使用CORS 策略来确定谁可以(和不能)直接访问他们的服务器

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

碰巧最好的方法是使用rack-corsgemJ-H ,如:)所推荐的那样

于 2014-04-22T10:12:31.860 回答
2

您可能想尝试 Rack-Cors gem 之类的东西:https ://github.com/cyu/rack-cors

于 2014-04-22T03:53:47.943 回答