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

137
Vistas
Parámetro de cadena www-form-urlencoded no reconocido en la comunicación API

Es difícil dar un ejemplo reproducible, resumo aquí los componentes principales:

Tenemos un sistema front-end/back-end en un servidor ubuntu 18.04. El lado del cliente es una plataforma web donde los usuarios pueden crear un proyecto con características (como nombre, fecha...). El front-end está codificado en javascript, con un mongoDB detrás y se comunica con una API de matraz. El enlace web es administrado por un proxy web dedicado.

Nos enfrentamos a un comportamiento muy desconcertante que no entendemos después de días de depuración:

El front-end envía un parámetro de cadena codificado en URL con formulario www X a la API. Este parámetro es opcional y puede estar vacío.

Verificamos que este parámetro esté en el cuerpo de la solicitud

 let X = req.body.X? req.body.X : "";

Si se establece el parámetro, las solicitudes se realizan correctamente. Sin embargo, si se omite el parámetro, ocurre un comportamiento extraño en la API:

  • Se recibe la solicitud HTTP, podemos leer algunas propiedades clave, como la URL solicitada, los encabezados y demás.
  • Al acceder a la propiedad request.form, un dictado que contiene los parámetros como pares clave-valor, la API se congela.
  • Después de un corto tiempo, las solicitudes agotan el tiempo de espera del lado frontEnd
  • Después del tiempo de espera, Flask resuelve la solicitud con un código 400 BAD REQUEST sin generar ninguna excepción ni llamar a un controlador de errores establecido para el código 400.
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Finalmente encontramos la razón por la que falló. Lo documento aquí para el próximo: La versión de desarrollo usó la biblioteca 'got' para la solicitud http. Por el motivo que sea (todavía estamos investigando y completaré la respuesta una vez que encontremos más), la solicitud con una cadena vacía falló para 'obtuve'. Cambiamos a la biblioteca 'axios' y todo salió bien.

about 4 years ago · Juan Pablo Isaza 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