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

122
Vistas
Orden de encabezados y mayúsculas incorrectos al realizar una solicitud HTTP/2.0 con Node JS

Lo que necesito (TL; DR):

Necesito que los encabezados de solicitud sean exactamente iguales a los que especifico en las opciones de solicitud de http2, debe persistir el uso de mayúsculas y minúsculas y el orden de todos los encabezados.

¿Cómo puedo establecer explícitamente este orden o modificarlo antes de que se envíe la solicitud? Si no es posible con la biblioteca 'http2' predeterminada, hágame saber cualquier otra biblioteca que sea capaz de hacer esto.

Si necesitas un poco más de contexto, ¡sigue leyendo!

Que pasa ahora:

Cuando realizo una solicitud HTTP/2.0 con la biblioteca 'http2', todos los nombres de los encabezados parecen estar normalizados en minúsculas y su orden se cambia antes de enviar la solicitud.

Código de ejemplo que uso para realizar una solicitud HTTP/2.0:

 const http2 = require('http2'); const client = http2.connect('http://localhost:8000'); const request = client.request({ ':method': 'GET', ':authority': 'localhost:8000', ':scheme': 'https', ':path': '/', 'sec-ch-ua-mobile': '?0', 'sec-ch-ua': `" Not A;Brand";v="99", "Chromium";v="99", "Google Chrome";v="99"`, 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36', 'Cookie': 'foo=bar', }); request.end()

El orden de los encabezados que espero recibir en el servidor:

 :method: GET :authority': localhost:8000 :scheme': https :path: / sec-ch-ua-mobile: ?0 sec-ch-ua: " Not A;Brand";v="99", "Chromium";v="99", "Google Chrome";v="99" User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36 Cookie: foo=bar

Lo que realmente recibo en el servidor:

 :path: / :scheme: https :authority: localhost:8000 :method: GET sec-ch-ua-mobile: ?0 sec-ch-ua: " Not A;Brand";v="99", "Chromium";v="99", "Google Chrome";v="99" user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36 cookie: foo=bar

Tenga en cuenta que la carcasa de todos los encabezados y el orden de: ruta,: esquema,: autoridad y: encabezados de método son diferentes de lo que espero que sean ...

Ya investigué el código fuente de http2, parece que no es posible definir explícitamente el orden de estos 4 encabezados y deshabilitar esta normalización de minúsculas de nombres. Muchas de las bibliotecas HTTP/2.0 existentes para el nodo se basan en la biblioteca nativa, por lo que tienen este problema.

Pero aquí no vamos, ¿cómo puedo establecer explícitamente este orden de encabezado o modificarlo antes de que se envíe la solicitud para que coincida con lo que espero? ¿Existe alguna biblioteca o enlace de biblioteca que permita una forma de lograr esto en Node JS?

PD: ya probé node-libcurl y tiene el mismo problema.

¡Gracias!

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

De la especificación HTTP/2 :

Al igual que en HTTP/1.x, los nombres de campo de encabezado son cadenas de caracteres ASCII que se comparan sin distinguir entre mayúsculas y minúsculas. Sin embargo, los nombres de los campos de encabezado DEBEN convertirse a minúsculas antes de su codificación en HTTP/2. Una solicitud o respuesta que contenga nombres de campo de encabezado en mayúsculas DEBE tratarse como mal formada

No estoy al tanto de ninguna restricción similar en cuanto a los pedidos, sin embargo, también diría que depender del orden es una mala idea, ya que tampoco estoy al tanto de que se conserve explícitamente.

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