require 'rack/cors'
Rails.application.config.middleware.insert_before 0, Rack::Cors do
allow do
origins CORS_ORIGINS[Rails.env]
resource '*', :headers => :any, :methods => [:get, :post, :options, :put, :delete],credentials: true
end
end
我正在使用 gem 'rack-cors' 这对于我的不同项目来说效果很好,但目前在 ruby '2.7.6'、rails '5.1.7' 中我遇到了一些问题,我不确定这是因为 ruby on Rails 的版本还是其他原因。
/config/initializers/cors.rb
正如 gem 'rack-cors' 中提到的,上面文件中编写的代码,也在 config.ru 中尝试过,后来在 /config/application.rb 中尝试过
我正在打印一些消息,例如,
Rails.application.config.middleware.insert_before 0, Rack::Cors do
allow do
puts "************cors************"
origins CORS_ORIGINS[Rails.env]
resource '*', :headers => :any, :methods => [:get, :post, :options, :put, :delete],credentials: true
end
end
在上述情况下也会打印此消息,但在服务器上部署时,这不起作用。
我有一个几乎相似的环境,并且有一个有效的 CORS 管理。 也许这有帮助。我整理出起源,然后放入资源。
Rails.application.config.middleware.insert_before 0, Rack::Cors do
allow do
origins do |source, _env|
# this proc should return true or false
# You can dynamically check the database/redis or any other storage for your origins
Origin.list.include?(Addressable::URI.parse(source)&.host)
end
resource '*',
headers: %i[get post options put delete],
methods: :any
end
end