如何避免ActionController :: InvalidCrossOriginRequest异常?

时间:2014-04-22 03:34:58

标签: ruby-on-rails ruby-on-rails-4.1

我将rails应用更新到Rails 4.1并开始获取ActionController :: InvalidCrossOriginRequest异常。我发现bing bots主动抓取我动态生成的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

2 个答案:

答案 0 :(得分:4)

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

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

实现此目的的最佳方法是使用J-H建议的rack-cors gem:)

答案 1 :(得分:2)

你可能想尝试像Rack-Cors gem这样的东西:https://github.com/cyu/rack-cors