ruby-on-rails - Rails 5.2 CORS 被阻止
问题描述
提前感谢任何可以帮助我的人!
我正在使用 React 和 Webpacker 运行 Rails 5.2 应用程序,我想在用户登录时为他们显示 Gravatar 图标,但我一直被浏览器 CORB 阻止。
我一直在查看所有 Rack CORS 文档和 Stack Overflow 上关于使用 CORS 设置导轨的条目,但我似乎仍然无法让它工作。我allowed-origins
在标题中看不到 ,并且对 Gravatar.com 的请求继续被阻止。
如https://stackoverflow.com/a/56772510/759615config/credentials.yml.enc
中所述,我已经使用我的主机名设置了我的主机名:
development:
allowed_origins:
- http://localhost:3000
- http://127.0.0.1:3000
production:
allowed_origins:
- http://productionurl1.com
- http://productionurl2.com
application.rb
:
class Application < Rails::Application
config.load_defaults 5.2
config.middleware.insert_before 0, Rack::Cors do
allow do
origins Rails.application.credentials[Rails.env.to_sym][:allowed_origins]
resource '*',
headers: :origin,
methods: [:get, :post, :options, :put]
end
end
end
application.rb
为了测试这个概念,我还尝试了一个完全开放的 CORS 配置:
...
allow do
origins '*'
...
对于本地环境,我已经为 dev_server 设置了标头config/webpacker.yml
'Access-Control-Allow-Origin': 'http://localhost:3000/'
(其中我也尝试了 Webpacker 主机名,127.0.0.1
但无济于事)
有很多变量,我可能错过了一些东西或更可能误解了文档中的含义,但我真的希望那里有人能得到我正在寻找的 CORS 答案!
解决方案
我Rack::Cors
在没有变量的项目中使用:
config.middleware.insert_before 0, Rack::Cors do
allow do
origins 'localhost:5000', /https*:\/\/.*?domain\.(com|org)\/*/, /https:\/\/another_domain\.my_domain\.org/
resource '*', headers: :any, methods: :any, credentials: true
end
end
而且效果很好。
推荐阅读
- scala - Spark java.lang.NoClassDefFoundError: org/apache/spark/sql/execution/datasources/v2/FileDataSourceV2
- javascript - AngularJS:如何有条件地应用两个过滤器?
- discord.js - 消息收集器不值得
- reactjs - 解决内存问题:Chrome 开发工具中的 FiberNode 是什么?
- c# - C# Entity Framework - 读取时排序视图
- c - 当我尝试在 Linux Ubuntu 18 上构建 iputils 时如何解决这个问题:找不到 C 库“cap”?
- swiftui - AdMob 横幅广告在 iOS 应用中显示为空白
- python - 画线,但我在屏幕上看不到它们
- angular - 带有身份服务器和 oidc-client-js 的 Angular SPA:应用程序启动时是否有触发登录的模式(不使用登录按钮)?
- angular - 导入 Injectables 和 Angular 服务