CORS 无法按照 ruby '2.7.6'、rails '5.1.7' 中的 gem 'rack-cors' 工作

问题描述 投票:0回答:1
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

在上述情况下也会打印此消息,但在服务器上部署时,这不起作用。

ruby-on-rails rubygems cors ruby-on-rails-5 rack-cors
1个回答
0
投票

我有一个几乎相似的环境,并且有一个有效的 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
© www.soinside.com 2019 - 2024. All rights reserved.