Sve*_*ies 4 ruby-on-rails rack-cors
我正在为我的 rails 服务器配置 CORS 设置 - 我希望能够在本地运行时测试我的后端,使用本地主机上的前端。
但是,据我所知,CORS 是针对 CSRF(?) 的重要安全机制,因此当应用程序投入生产时,我希望后端只允许实时网站的来源。像这样:
if development:
allow do
origins 'localhost:3000', 'localhost:3001', 'https://my-app.com'
resource '*',
headers: :any,
methods: [:get, :post, :put, :patch, :delete, :options, :head]
end
end
if production:
allow do
origins 'https://my-app.com'
resource '*',
headers: :any,
methods: [:get, :post, :put, :patch, :delete, :options, :head]
end
end
Run Code Online (Sandbox Code Playgroud)
我知道让一个未知用户在本地主机上运行一个恶意应用程序并且不知道他们在做什么是相当困难的,但仍然比我说的抱歉更安全。
我该怎么办?为什么这没有在 Rack::CORS 的 Github 页面上显着地记录?我有一种感觉,我错过了一些东西。请赐教。
如果您使用 Rails 5 或更早版本,则可以在将 Rack::CORS 中间件注入堆栈时处理配置:
# config/initializers/cors.rb
Rails.application.config.middleware.insert_before 0, Rack::Cors do
allow do
if Rails.env.development?
origins 'localhost:3000', 'localhost:3001', 'https://my-app.com'
else
origins 'https://my-app.com'
end
resource '*',
headers: :any,
methods: [:get, :post, :put, :patch, :delete, :options, :head]
end
end
Run Code Online (Sandbox Code Playgroud)
由于您的 Rails 应用程序在加载初始化程序时被引导,您可以通过Rails.env. 如果你想避免硬编码,你可以使用环境变量。
| 归档时间: |
|
| 查看次数: |
326 次 |
| 最近记录: |