Rails为CORS路由通配

时间:2013-01-30 23:46:48

标签: ruby-on-rails cors

我在rails API上实现了CORS,我基本上想要定义一条路由,说明“通过OPTIONS方法对API调用的所有请求都应该转到控制器操作cors”。

到目前为止我所拥有的相关部分:

# routes.rb:
scope :module => 'api', :path => 'api' do
  match '*', :action => 'cors', :constraints => { :method => 'OPTIONS' }
end

# base_api_controller.rb:
class Api::BaseApiController < ApplicationController
  def cors
    # ... setting headers of Access-Control-Allow-Origin and stuff here...
  end
end

我遇到的问题是当我通过javascript发出请求时,我收到错误:

OPTIONS <url> Resource failed to load

看起来这应该是有效的,我只是错过了一些简单的东西。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我不确定为什么你会希望请求通过&#34;控制器动作角色&#34;而不是默认的api /控制器,但这里有你怎么做

#Gemfile
gem 'rack-cors', :require => 'rack/cors'

#config/application.rb
config.middleware.insert_before 0, "Rack::Cors" do
  allow do
    origins "*"
    resource "/api/*", :headers => :any, :methods => [:options], :action => 'cors'
  end
end

或者我不会将其发送到其他控制器操作,所以这实际上是我想要的

#Gemfile
gem 'rack-cors', :require => 'rack/cors'

#config/application.rb
config.middleware.insert_before 0, "Rack::Cors" do
  allow do
    origins "*"
    resource "/api/*", :headers => :any, :methods => [:options]
  end
end