Tengo un servidor corriendo express. Utiliza req.protocol para forzar https. Sin embargo, cuando visito el sitio en http, todavía aparece https.
Aquí está la función:
app.use((req, res, next)=>{ console.log(req.protocol); if(req.protocol === "https"){ next(); }else{ res.redirect(`https://${req.headers.host}${req.url}`); } });No está redirigiendo y, por lo tanto, el sitio no funciona. ¿Qué puedo hacer para arreglar esto?
Parece que su servidor solo responde a solicitudes HTTPS, no a solicitudes HTTP. Recuerde que sirve HTTP y HTTPS en puertos separados (80 y 443, por defecto). Según su descripción, parece que solo está sirviendo HTTPS. Aquí está el ejemplo de los documentos de listen de Express de cómo sirven a ambos:
var express = require('express') var https = require('https') var http = require('http') var app = express() http.createServer(app).listen(80) https.createServer(options, app).listen(443) Tenga en cuenta que llamaron a listen dos veces, una vez en dos servidores diferentes, uno para HTTP y otro para HTTPS.