使用 Rack-cors 和 Grape 添加自定义响应 header

Add custom response header with Rack-cors and Grape

我正在 Rails API 上开发带有 Ruby 的 Ionic(Cordova) 应用程序。 我想在登录后使用响应 headers 到 return 令牌。 我正在使用 rack-cors gem 使跨源请求工作:

application.rb

config.middleware.insert_after Rails::Rack::Logger, Rack::Cors, :logger => Rails.logger do
      allow do
        origins '*'
        resource '/api/*', :headers => :any, :methods => [:get, :post, :options, :put]
      end
    end

和 grape gem 来管理我的 API 路线。 但是我找不到在我的回复中添加 header 的方法,因为我添加了 rack-cors.

我试过这个:

header('Access-Token', user.token.key)

但是没用。无论我做什么,我最终都会得到那些 headers:

{cache-control: "max-age=0, private, must-revalidate", content-type: "application/json"}

谁能帮我解决这个问题?

我用了gem 'devise_token_auth'

此外,我在 application.rb 中有此配置。

  class Application < Rails::Application
    # Do not swallow errors in after_commit/after_rollback callbacks.
    config.active_record.raise_in_transactional_callbacks = true

    config.middleware.use Rack::Cors do
      allow do
        origins '*'
        resource '*',
          :headers => :any,
          :expose  => ['access-token', 'expiry', 'token-type', 'uid', 'client'],
          :methods => [:get, :post, :options, :delete, :put]
      end
    end

  end