es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

console.log no funciona según lo esperado con los registros de Heroku.

Mi código:

app.get('*', (req, res) => {
  console.log(req.headers);

  // if (req.headers['protocol'] != 'https') {
  //   res.redirect('https://www.soundsqueezr.com/' + req.url);
  // }
});

app.get("/", (req, res) => {
  res.sendFile(staticPath);
});

Estoy tratando de ver los encabezados que se envían desde la solicitud en mi primera aplicación de node+express+heroku, pero no puedo encontrar dónde se muestra console.log(req.headers);. Cuando se ejecuta localmente y se ve desde localhost, puedo ver que la salida se registra en el terminal, pero desde los registros de Heroku solo puedo ver esto:

2022-01-02T20:40:20.248597+00:00 heroku[router]: at=info method=GET path="/background.jpeg" host=www.soundsqueezr.com request_id=16775427-28b9-4027-bdea-e555dcf42ee2 fwd="24.201.224.174" dyno=web.1 connect=0ms service=2ms status=304 bytes=324 protocol=http

El objetivo final es redirigir al usuario a la versión https de la dirección de mi aplicación, verificando si el encabezado en la solicitud es http o https y redirigiendo si es http. Pero tengo algunos problemas. Cualquier ayuda es muy apreciada.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que la declaración console.log(req.headers) no se está mostrando en los registros de Heroku. Esto puede deberse a que los registros de la aplicación de Heroku se visualizan por separado de los registros mostrados en la terminal al ejecutar la aplicación localmente.

    Para redirigir al usuario a la versión HTTPS de la aplicación, puedes utilizar la propiedad req.protocol para verificar si la solicitud se está realizando con HTTPS o no. Aquí tienes un ejemplo de cómo puedes modificar el código para lograr esto:

    app.get('*', (req, res, next) => {
      console.log(req.headers);
    
      if (req.protocol !== 'https') {
        return res.redirect(`https://${req.headers.host}${req.url}`);
      }
    
      next();
    });
    
    app.get('/', (req, res) => {
      res.sendFile(staticPath);
    });
    

    En este código, estamos verificando si req.protocol no es https, y en caso afirmativo, estamos redirigiendo al usuario a la versión HTTPS de la aplicación mediante la construcción de una nueva URL utilizando req.headers.host y req.url.

    Ten en cuenta que estamos llamando a next() en la función de middleware para permitir que la solicitud continúe con el siguiente controlador.

Comments are closed.