【发布时间】:2018-11-13 23:10:30
【问题描述】:
我正在编写一个包含几个 API 的应用程序,这些 API 应该可以从任何主机访问。现在,到目前为止,我已经通过以下方式在我的application.rb 中处理了这个问题:
config.action_dispatch.default_headers = {
'Access-Control-Allow-Origin' => '*'
}
但是,访问 API 的客户端之一不允许从定义了 '*' 的源获取数据。我的想法是将允许的来源动态设置为请求 API 的来源。像这样的:
Rails.application.config.middleware.insert_before 0, Rack::Cors do
allow do
origins ActionDispatch::Request.headers['Host']
resource '*',
headers: :any,
methods: [:get, :post, :put, :patch, :delete, :options, :head]
end
end
但由于cors.rb 是一个初始化器,它无法访问进来的请求。有没有办法让源列表动态化,所以它总是只包含请求主机?
【问题讨论】:
标签: ruby-on-rails ruby cors ruby-on-rails-5