web-dev-qa-db-fra.com

Mise à niveau Rails à 6, obtenant une erreur d'hôte bloqué

J'avais besoin de la nouvelle fonction dans ActiveStorage pour resize_to_fill, j'ai donc mis à niveau vers Ruby 2.5.1 et Rails 6.

Ruby '2.5.1'

gem "Rails", github: "Rails/rails"

Quand j'ai arrêté, puis démarré mon serveur (Cloud 9), j'ai reçu l'erreur Rails:

Hôte bloqué: xxxxxxx-xxxxxxx.c9users.io Pour autoriser les demandes à xxxxxxx-xxxxxxx.c9users.io, ajoutez la configuration suivante:

Rails.application.config.hosts << "xxxxxxx-xxxxxxx.c9users.io"

J'ai essayé de redémarrer, de nouvelles fenêtres, mais rien ne s'en débarrasse. Je n'ai jamais vu cette erreur auparavant. Je suppose que la nouvelle version de Rails fait quelque chose?

6
Tony S.

Comme je l'ai dit dans la question d'origine, utiliser Active Storage et obtenir le redimensionnement correct des images était une tâche qui ne semblait pas fonctionner avec Rails 5.x du tout. Après un certain temps et une tonne de recherches sur imagemagick.org, je l'ai fait fonctionner EXACTEMENT comme j'avais besoin, et je peux maintenant dire que j'utilise Active Storage sur Rails 5.2 avec tout, des fichiers aux images. Dans ce cas, concernant les images, j'ai ajouté ce code pour les afficher.

<%= image_tag attachment.variant(combine_options: {auto_orient: true, thumbnail: '200x200^', gravity: 'center', extent: '200x200' }) %>

Si intéressé,

auto-orient s'occupe de ces photos latérales folles que vous rencontrez parfois.

gravity et extent s'occupent du recadrage.

Une fois qu'une image est chargée la première fois, elle sera disponible à partir de là. La première fois, les charges peuvent prendre une ou deux secondes supplémentaires, selon la taille.

0
Tony S.

Si vous souhaitez désactiver cette fonctionnalité sur votre environnement de développement, vous pouvez définir

config.hosts = nil dans config/environments/development.rb.

7
kobaltz

L'hôte bloqué est une nouvelle fonctionnalité de Rails 6. Vous pouvez ajouter ce modèle à votre config/environments/development.rb ne vous en faites pas en cas d'URL dynamiques

config.hosts << /[a-z0-9]+\.c9users\.io/

Aussi pour l'utilisateur ngrok, remplacez simplement ci-dessus c9users par ngrok

Source: https://github.com/MikeRogers0/puma-ngrok-tunnel

4
Dat Le Tien

Cet article fonctionne pour moi s'il vous plaît jetez un oeil: https://www.fngtps.com/2019/Rails6-blocked-Host/

The first option is to whitelist the development of hostname in config/environments/development.rb.

Rails.application.configure do
  # Whitelist one hostname
  config.hosts << "hostname"
  # Whitelist a test domain
  config.hosts << /application\.local\Z/
end
The second option is to clear the entire whitelist, which lets through requests for all hostnames.

Rails.application.configure do
  config.hosts.clear
end

Crédits à: Manfred Stienstra

2
Kiry Meas

Dans Rails 6 Action Pack a introduit ActionDispatch :: HostAuthorization et autorise par défaut uniquement [IPAddr.new ("0.0.0.0/0"), IPAddr.new ("::/0"), "Localhost"]

Vous pouvez ajouter des tableaux de RegExp, Proc, IPAddr et String ou une seule chaîne dans le fichier config/application.rb comme ceci

class Application < Rails::Application
  config.hosts << "xxxxxxx-xxxxxxx.c9users.io"
  ...
end

De " https://drivy.engineering/Rails-6-unnoticed-features ":

Rails 6 a ajouté un nouveau middleware appelé ActionDispatch :: HostAuthorization vous permettant de mettre en liste blanche certains hôtes pour votre application et d'empêcher attaques d'en-tête d'hôte . Vous pouvez facilement le configurer avec une chaîne, IPAddr, Proc et RegExp (utile lorsque vous traitez avec des domaines génériques).

0
Donapieppo