在Grape on Rails中启用CORS

时间:2016-09-13 19:20:40

标签: ruby-on-rails cors grape-api

我正在使用Grape on Rails。虽然我无法为它设置CORS。

rack-cors gem解释了如何在 application.rb 中为“Rails”设置它。虽然没有说明如何为Grape on Rails启用它。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

设置Rack-CORS

一些简单的步骤,我们准备好了!

将以下内容添加到您的Gemfile并捆绑安装:

gem 'rack-cors', :require => 'rack/cors'.

将您的API模块添加到config / application.rb并配置Rack-CORS中间件:

module MyAppRails  
  class Application < Rails::Application
    config.middleware.use Rack::Cors do
      allow do
        origins "*"
        resource "*", headers: :any, methods: [:get, :post, :put, :delete, :options]
      end
    end
    config.active_record.raise_in_transactional_callbacks = true
  end

使用origins "*",我们指定我们的API将接受来自整个互联网中任何域的HTTP请求。

使用resource "*",我们指定跨源请求可以访问我们的任何资源(尽管我们目前只有一个 - 毕业生的资源)。

然后我们指定使用任何HTTP方法的跨源请求将被接受 - 但是,如果您记得,我们在API模块中定义了我们的Graduates类,以仅响应所有梯度或仅一个毕业的请求。我们稍后可以添加其他HTTP方法。

答案 1 :(得分:0)

您可以手动添加标题,如葡萄问题中所述:tutorial on transfer learning

我会尝试使用rack-cors中间件:直接使用它或用Grape Middleware(https://github.com/ruby-grape/grape/issues/170)包装它