Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

136
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda