Ton*_* S. 6 ruby-on-rails cloud9 ruby-on-rails-6
我需要ActiveStorage中的新函数resize_to_fill,因此我升级到了Ruby 2.5.1和Rails 6。
ruby '2.5.1'
gem "rails", github: "rails/rails"
Run Code Online (Sandbox Code Playgroud)
当我停止然后启动服务器(Cloud 9)时,我收到了Rails错误:
阻止的主机:xxxxxxx-xxxxxxx.c9users.io要允许对xxxxxxx-xxxxxxx.c9users.io的请求,请添加以下配置:
Rails.application.config.hosts <<“ xxxxxxx-xxxxxxx.c9users.io”
我尝试过重新启动,新窗口,但是没有任何东西可以解决。我以前从未见过此错误。我猜新版本的Rails正在做什么?
小智 67
The Blocked Host 是 Rails 6 的一个新特性。你可以添加这个模式到你config/environments/development.rb的动态 url 中不用担心
config.hosts << /[a-z0-9]+\.c9users\.io/
Run Code Online (Sandbox Code Playgroud)
同样对于 ngrok 用户,只需将上面替换c9users为ngrok
来源:https : //github.com/MikeRogers0/puma-ngrok-tunnel
Jer*_*ert 16
要允许来自任何子域ngrok.io(或其他服务)的请求,最简单的解决方案是在其前面添加.如下内容:
# config/environments/development.rb
Rails.application.configure do
...
config.hosts << '.ngrok.io'
end
Run Code Online (Sandbox Code Playgroud)
不需要像其他答案中提到的那样对子域使用正则表达式。
PS:不要像config.hosts.clear其他答案中提到的那样禁用此功能,因为这违背了 Rails 的 DNS 重新绑定保护的目的,并且在适当的情况下,外部攻击者可以获得对本地 Rails 应用程序信息的完全访问权限(来源) 。
Kir*_*eas 10
这篇文章对我有用:
第一个选项是将主机名列入白名单config/environments/development.rb:
Rails.application.configure do
config.hosts << "hostname" # Whitelist one hostname
config.hosts << /application\.local\Z/ # Whitelist a test domain
end
Run Code Online (Sandbox Code Playgroud)第二个选项是清除整个白名单,它允许通过对所有主机名的请求:
Rails.application.configure do
config.hosts.clear
end
Run Code Online (Sandbox Code Playgroud)幸得曼弗雷德Stienstra。
简单的解决方案:
将此行添加到 config/environments/development.rb
config.hosts << /[a-z0-9]+\.ngrok\.io/
Run Code Online (Sandbox Code Playgroud)
重新启动你的 rails 服务器,它会工作
如果要在开发环境中禁用此功能,可以设置
config.hosts = nil在中config/environments/development.rb。
在 Rails 6 Action Pack 中引入了 ActionDispatch::HostAuthorization,默认情况下仅允许 [IPAddr.new(\xe2\x80\x9c0.0.0.0/0\xe2\x80\x9d), IPAddr.new(\xe2\x80\x9c) ::/0\xe2\x80\x9d), \xe2\x80\x9clocalhost\xe2\x80\x9d]
\n\n您可以像这样在文件 config/application.rb 中添加 RegExp、Proc、IPAddr 和 String 的数组或单个 String
\n\nclass Application < Rails::Application\n config.hosts << "xxxxxxx-xxxxxxx.c9users.io"\n ...\nend\nRun Code Online (Sandbox Code Playgroud)\n\n来自“ https://drivy.engineering/rails-6-unnoticed-features ”:
\n\n\n\nRails 6 添加了一个名为 ActionDispatch::HostAuthorization 的新中间件,允许您将应用程序的某些主机列入白名单并防止主机标头攻击。您可以使用 String、IPAddr、Proc 和 RegExp 轻松配置它(在处理通配符域时很有用)。
\n
我添加Rails.application.config.hosts << "xxxxxxx-xxxxxxx.c9users.io"并config/application.rb修复了我的测试应用程序。然后我对我真正的应用程序做了它,它也有效。问题是,Devise 也抛出了一个错误,显然至少要到 Rails 6 beta 才能修复。我想我会回去Carrierwave满足我的图像尺寸需求,直到ActiveStorage更加成熟。
| 归档时间: |
|
| 查看次数: |
3544 次 |
| 最近记录: |