Rediriger HTTP vers HTTPS dans Node.js à l'aide d'Express

Auteur:Esadax
Mise à jour:29 mai 2025

Pour nous assurer que tout le trafic HTTP est redirigé vers HTTPS, nous pouvons utiliser le middleware Express.js avec les modules http et https. Cette configuration redirige automatiquement toutes les requêtes HTTP entrantes vers HTTPS tout en permettant aux requêtes HTTPS de passer normalement.

Voici comment vous pouvez le mettre en œuvre étape par étape:

  1. Configurer l'application Express : Créez une instance d'Express.js pour gérer la logique de votre serveur.

  2. Définir un middleware pour rediriger HTTP vers HTTPS : Utilisez le middleware Express pour vérifier le protocole de chaque requête entrante. S'il s'agit de HTTP, redirigez-le vers HTTPS.

  3. Définissez vos routes : Spécifiez quelles URL doivent répondre avec un message ou gérer d'autres types de trafic.

  4. Créer un serveur HTTP : Utilisez le module http pour créer un serveur qui écoute sur le port 3000 et délègue les requêtes à votre application Express.

  5. Créer un serveur HTTPS : Utilisez le module https pour créer un autre serveur qui écoute sur le même port (ou un autre si nécessaire) et délègue également les requêtes à votre application Express.

  6. Démarrer les deux serveurs : Démarrez les deux serveurs afin qu'ils puissent gérer les connexions entrantes.

Voici le code complet:

const express = require('express');
const https = require('https');
const http = require('http');

const app = express();

// Redirect HTTP to HTTPS
app.use((req, res, next) => {
    if (req.protocol === 'http') {
        return res.redirect(`https://${req.hostname}${req.path}`);
    }
    next();
});

// Define routes for HTTPS traffic
app.get('/', (req, res) => {
    res.send('HTTPS is working!');
});

// Create HTTP server
const httpServer = http.createServer((req, res) => {
    app(req, res, next => {
        // Middleware has already been applied here
        // No need to call next() again as middleware handles it
    });
}).listen(3000);

// Create HTTPS server
const httpsServer = https.createServer({ server: app }).listen(3000);

// Start both servers
httpServer.listen(3000);
httpsServer.listen(3000);

Explication du Code:

  • Express App Setup : Nous créons une application Express en utilisant express() et définissons son middleware et ses routes au sein de cette instance.

  • Middleware for Redirecting : La fonction middleware vérifie si le protocole de la requête est HTTP. Si oui, il redirige le client vers le même chemin mais sur HTTPS.

  • Définition de l'itinéraire : Nous définissons un itinéraire GET pour l'URL racine (/) qui répond avec "HTTPS is working!" lorsqu'on y accède via HTTPS.

  • Création du serveur HTTP : En utilisant http.createServer(), nous créons un serveur HTTP qui écoute sur le port 3000. Ce serveur délègue chaque requête à l'application Express, ce qui permet au middleware et aux routes de la traiter.

  • Création d'un serveur HTTPS : De même, https.createServer() crée un serveur HTTPS configuré avec un certificat (en supposant qu'un certificat est déjà configuré). Il écoute également sur le port 3000 et délègue les demandes à l'application Express.

  • Démarrage des serveurs : Les deux serveurs sont démarrés à l'aide de listen(), ce qui garantit qu'ils peuvent gérer les connexions entrantes et traiter les requêtes correctement.