ruby-on-rails - CORS 的 Rails 路由通配

标签 ruby-on-rails cors

我在 Rails API 上实现 CORS,我基本上想要定义一个路由,表示“所有通过 OPTIONS 方法调用 API 的请求都应该转到 Controller 操作 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

这似乎应该有效,我只是缺少一些简单的东西。有什么想法吗?

最佳答案

我不确定为什么您希望请求通过“ Controller 操作 cors”而不是默认的 api/ Controller ,但您可以这样做

#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

或者我不会将它发送到不同的 Controller 操作所以这实际上是我认为你想要的

#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

关于ruby-on-rails - CORS 的 Rails 路由通配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14616021/

相关文章:

ruby-on-rails - Sorcery gem Facebook OAuth 返回 Nil 电子邮件

ruby-on-rails - 为开发中的 Assets 提供 Rack 错误(不是动态编译)

ruby-on-rails - 渲染图像

javascript - Facebook javascript 与 RoR 集成不起作用

javascript - Backbone CORS 问题

ruby-on-rails - 更新 Rails 和其他 gem 后出现 Sass 或 Foundation 错误

javascript - 如何使 Chrome 扩展程序的未捕获异常处理程序工作(由于 CORS 保护而不起作用)

ruby-on-rails - 已完成 401 未授权请求被重定向到该请求对于需要预检的跨域请求是不允许的

google-chrome - CORS 错误仅发生在 Chrome 中的某些 XHR 上

javascript - 在 C++ REST SDK 的 http_listener 上添加 Access-Control-Allow-Origin