Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

255
Vistas
Forzar http:// a https:// en una aplicación de sails.js

Intento forzar mi aplicación web Sails.js que está alojada en heroku (sin nginx instalado) de http:// a https:// y uso este middleware express en mi aplicación sail.js:

En Express se vería así:

 app.use(forceDomain({ hostname: 'www.example.com', port: 4000, protocol: 'https' }));

Traté de usarlo en mi archivo config/http.js en mi aplicación sails.js:

 middleware: { forceDomain: function (req, res, next) { forceDomain({ hostname: 'www.myurl.com', port: 4000, protocol: 'https' }); next(); }, order: [ 'forceDomain', ... }

No entiendo exactamente cómo usar esta cosa "app.use ()" en sails.js. Está aquí explicado , pero realmente no entendí. Lo que tengo ahora no funciona (no hay errores, pero tampoco redirección). ¿Cómo puedo arreglar esto?

Instalado este módulo , tampoco funciona.

about 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Aquí está la solución de cómo forzar SSL en una aplicación sails.js que se ejecuta en heroku sin nginx y sin módulos externos:

En el archivo config/http.js hay un ejemplo de middleware personalizado:

 **************************************************************************** * Example custom middleware; logs each request to the console. * **************************************************************************** myRequestLogger: function (req, res, next) { console.log("Requested :: ", req.method, req.url); next(); }

Hice mi propia función de middleware personalizada que controla si la solicitud es segura y, de no ser así, redirige la solicitud a https:// o, si es una solicitud de websocket, redirige la solicitud a wss://

 order: [ ... 'forceSSL', ... ], forceSSL: function (req, res, next) { if (req.isSocket) { return res.redirect('wss://' + req.headers.host + req.url); } else if (req.headers["x-forwarded-proto"] == "http") { return res.redirect('https://' + req.headers.host + req.url); } else { next(); //it's already secure } }

No hay necesidad de módulos externos o conexiones. solo esa función y funciona.

about 4 years ago · Santiago Trujillo Denunciar

0

Cada valor en el diccionario sails.config.http.middleware (además de order ) debe ser una función de middleware de estilo Express, es decir, una función que acepta req , res y next , que es exactamente lo que devuelve el módulo forcedomain . El problema en su código es que está envolviendo esa función en otra función en lugar de simplemente devolverla. Probar:

 middleware: { forceDomain: forceDomain({ hostname: 'www.myurl.com', port: 4000, protocol: 'https' }), // <-- the call to `forceDomain()` returns a configured Express middleware fn. order: [ 'forceDomain', ... }

¡Esto supone que tiene var forceDomain = require('forcedomain') en la parte superior de ese archivo!

about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda