Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

135
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!