加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Rails 5.1 CORS – 如何为不同的环境设置不同

发布时间:2020-12-17 03:33:16 所属栏目:百科 来源:网络整理
导读:我正在使用带有Rail 5.1 API的rack-cors gem. 根据文档我有以下初始化程序: 配置/初始化/ cors.rb module Api Rails.application.config.middleware.insert_before 0,Rack::Cors do allow do origins ['http://localhost:4200','https://app.mydomain.com/'
我正在使用带有Rail 5.1 API的rack-cors gem.

根据文档我有以下初始化程序:

配置/初始化/ cors.rb

module Api
  Rails.application.config.middleware.insert_before 0,Rack::Cors do
    allow do
      origins ['http://localhost:4200','https://app.mydomain.com/']

      resource '*',headers: :any,:expose  => ['access-token','expiry','token-type','uid','client'],methods: [:get,:post,:put,:patch,:delete,:options,:head]
    end
  end
end

但是,这意味着当部署到生产环境时,我的api将接受来自任何localhost:4200 origin的请求.

如何将这些设置分开,以便不同的环境可以具有不同的允许来源?

解决方法

有几种不同的选择.一种是使用secrets.yml文件.在那里你可以为每个环境定义不同的值,让我们说:

development:
  allowed_origins:
    - http://localhost:4200

production:
  allowed_origins:
    - http://productionurl1.com
    - http://productionurl2.com

然后在配置文件中即可

module Api
  Rails.application.config.middleware.insert_before 0,Rack::Cors do
    allow do
      origins Rails.application.secrets.allowed_origins
    end
  end
end

另一个选项(取自评论)是使用环境文件,例如:

/development.rb

config.allowed_cors_origins = ["http://localhost:4200"]

然后在cors.rb初始化程序中,您可以执行以下操作:

Rails.application.config.allowed_cors_origins

(因为初始化程序将在环境配置文件之后调用,这应该可行).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读