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 (因为初始化程序将在环境配置文件之后调用,这应该可行). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |