我在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
看起来这应该是有效的,我只是错过了一些简单的东西。有什么想法吗?
答案 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