J'ai une application en cours d'exécution sur Heroku avec Express.js sur Node.js avec https
. Comment puis-je identifier le protocole pour forcer une redirection vers https
avec Node.js sur Heroku ?
Mon application est juste un simple http
-le serveur, il ne réalise pas (encore) que Heroku l'envoie. https
-Demandes :
// Heroku provides the port they want you on in this environment variable (hint: it's not 80)
app.listen(process.env.PORT || 3000);
8 votes
Le support Heroku a répondu à ma question ci-dessus, et je n'ai pas trouvé de réponse déjà postée ici, alors j'ai pensé la poster en public et partager les connaissances. Ils transmettent beaucoup d'informations sur la requête originale avec ses en-têtes de requête préfixés par un 'x-'. Voici le code que j'utilise actuellement (en haut de mes définitions de route) :
app.get('*',function(req,res,next){ if(req.headers['x-forwarded-proto']!='https') res.redirect('https://mypreferreddomain.com'+req.url) else next() })
1 votes
Ok j'ai compris que vous vérifiez pour https comme ça et redirigez si nécessaire. Mais y a-t-il un moyen de faire une redirection au niveau du DNS avec votre fournisseur de nom de domaine ? Ainsi, avant que le navigateur ne résolve le DNS, il est déjà en https. Parce qu'avec cette approche, je pense, étant donné ma connaissance des redirections, qu'une demande est faite sur http puis à nouveau sur https. Donc si des données sensibles ont été envoyées, elles ont été envoyées sur http une fois, puis sur https. Ce qui va à l'encontre du but recherché. S'il vous plaît laissez-moi savoir si je me trompe.
0 votes
@MuhammadUmer, votre raisonnement semble pointé du doigt ici, en avez-vous découvert davantage ?
0 votes
J'ai simplement utilisé cloudflare comme serveur de noms qui fonctionne comme nginx, et me permet de rediriger vers la version ssl juste en cliquant sur le bouton de basculement. vous pouvez également faire ceci : developer.mozilla.org/fr/US/docs/Web/HTTP/Headers/ De plus, généralement, personne n'envoie de données tout de suite, ils atterrissent généralement sur le formulaire puis le soumettent. Donc, côté serveur, le code, le serveur DNS, l'en-tête http, le javascript, vous pouvez vérifier et rediriger vers https. developer.mozilla.org/fr/US/docs/Web/HTTP/Redirections