web-dev-qa-db-fra.com

Erreur d'analyse HTTP, requête mal formée - Ruby on Rails

Je vois l'erreur suivante dans Terminal lorsque j'essaie d'exécuter une application Ruby on Rails.

HTTP parse error, malformed request (): #<Puma::HttpParserError: Invalid HTTP format, parsing fails.>
2017-03-12 13:10:02 -0400: ENV: {"rack.version"=>[1, 3], "rack.errors"=>#<IO:<STDERR>>, "rack.multithread"=>true, "rack.multiprocess"=>false, "rack.run_once"=>false, "SCRIPT_NAME"=>"", "QUERY_STRING"=>"", "SERVER_PROTOCOL"=>"HTTP/1.1", "SERVER_SOFTWARE"=>"puma 3.4.0 Owl Bowl Brawl", "GATEWAY_INTERFACE"=>"CGI/1.2"}

L'erreur du navigateur:

This site can’t provide a secure connection. localhost sent an invalid response. ERR_SSL_PROTOCOL_ERROR*

J'ai essayé ce qui suit

  • Vider le cache du navigateur et redémarrer
  • Revenir à un ancien commit dans GIT qui fonctionnait à l'époque
  • Redémarrage du terminal
  • Exécuter une autre application Rails qui était fonctionnelle
12
Nick April

Voici quelques solutions possibles.

  1. Assurez-vous que vous vous connectez via http: // localhost: 30 et non https: // localhost: 30 .

  2. Si le navigateur redirige vers HTTPS et que c'est Google Chrome, essayez cette solution qui résout un problème HSTS: https://stackoverflow.com/a/2858659

  3. Assurez-vous que vous n'avez pas l'environnement de production (si c'est ce que vous servez) qui force HTTPS. Si tel est le problème, mettez-le en commentaire ou remplacez true par false:

    config/environnements/production.rb

    # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
    config.force_ssl = true
    
9
Toma Nistor

semble que vous essayez d'exécuter HTTPS sur votre section locale. Vous devez avoir une boîte à outils TLS (comme openSSL) installée sur votre section locale. OPENSSL par exemple .

après vous être assuré de cela, et si cela ne fonctionne toujours pas, vous pourrez peut-être trouver votre réponse dans le prochain numéro de Github. On dirait un bug avec Puma gem. GITHUB ISSUE TALK

3
FedeSc

Pour ceux qui liront ceci à l'avenir, tenez compte des points suivants:

  1. Avez-vous changé votre serveur dans votre Gemfile. par exemple. de Puma à Thin?
  2. Avez-vous configuré un certificat SSL?
  3. Démarrez-vous votre serveur Web avec des drapeaux de certificat SSL?
  4. Le SSL est-il activé dans votre environnement de développement/production - et quel environnement invoquez-vous?

Si vous êtes d'accord avec la désactivation de SSL dans votre environnement de développement, vous pouvez le faire en allant à:

config/environments/development.rb et configuration:

config.force_ssl = false

Voici un code qui fonctionne pour moi, en utilisant puma, qui invoque la certification SSL (localement). J'ai créé mes certificats et les ai déposés à l'emplacement approprié:

Rails s -b 'ssl://localhost:3000?key=./.ssl/localhost.key&cert=./.ssl/localhost.crt'

Lorsque je veux l'exécuter dans un environnement de production à partir de mon PC, j'utilise ce qui suit:

Rails s -b 'ssl://localhost:3000?key=./.ssl/localhost.key&cert=./.ssl/localhost.crt' -e production

HTH

3
BKSpurgeon

Accédez à l'application à l'aide d'un autre navigateur ou si vous êtes en Chrome accédez-y en mode navigation privée. Après cela, l'erreur ne s'est plus affichée dans aucun navigateur. N'oubliez pas de supprimer le config.force_ssl ou définissez-le sur false dans le development.rb fichier en premier.

Je l'ai rencontré aujourd'hui après avoir ajouté puis supprimé le config.force_ssl = true config dans notre Rails 6 applis development.rb fichier. J'ai essayé d'accéder à l'application dans localhost, dans un navigateur Chrome, et la même erreur est apparue. Restared Rails server plusieurs fois, en vain.

L'accès à celui-ci dans un navigateur différent, où la version SSL de force du client d'application n'a jamais été ouverte, a fonctionné.

0
Ricardo Green