Ruby 关于 Rails Rack Cors 中间件黑名单

Ruby on Rails Rack Cors Middleware Blacklisting

我正在 Rails 4 中的遗留项目中工作,其中 rack-cors gem 用于允许 CORS。我知道有一个选项可以将域列入白名单。

use Rack::Cors do
  allow do
    origins 'localhost:3000', '127.0.0.1:3000',
        /\Ahttp:\/\/192\.168\.0\.\d{1,3}(:\d+)?\z/
        # regular expressions can be used here

    resource '/file/list_all/', :headers => 'x-domain-token'
    resource '/file/at/*',
     methods: [:get, :post, :delete, :put, :patch, :options, :head],
     headers: 'x-domain-token',
     expose: ['Some-Custom-Response-Header'],
     max_age: 600
     # headers to expose
  end
end

是否有任何选项可以将域列入黑名单,以便为该特定域禁用 CORS。我试图弄清楚这一点,因为我无法真正找到项目中使用 API 的所有域。我在文档中找不到任何内容来将特定域列入黑名单。

还有其他方法可以实现吗?我在这里先向您的帮助表示感谢。

将不安全域列入黑名单的最佳方法是使用 rack-attack gem

# config/initializers/rack_attack.rb

Rack::Attack.blocklist('block spammers') do |req|
  request.referer =~ spammer_regexp # /foo\.com|bar\.com/
end