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
Voici quelques solutions possibles.
Assurez-vous que vous vous connectez via http: // localhost: 30 et non https: // localhost: 30 .
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
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
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
Pour ceux qui liront ceci à l'avenir, tenez compte des points suivants:
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
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é.